@event4u/agent-config 14.8.0 → 14.9.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.
Files changed (136) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +165 -237
  3. package/README.md +1 -1
  4. package/agents/templates/.ai-council.yml.example +34 -4
  5. package/dist/agent-src/commands/pr/merge.md +9 -5
  6. package/dist/agent-src/commands/review/changes.md +95 -14
  7. package/dist/agent-src/commands/roadmap/process-full.md +2 -2
  8. package/dist/agent-src/contexts/execution/host-capability-manifest.md +77 -0
  9. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +36 -0
  10. package/dist/agent-src/contexts/execution/subagent-response-contract.md +80 -0
  11. package/dist/agent-src/rules/untrusted-input-defense.md +9 -3
  12. package/dist/agent-src/skills/code-review/evals/evals.json +87 -46
  13. package/dist/agent-src/skills/humanizer/SKILL.md +39 -0
  14. package/dist/agent-src/skills/humanizer/evals/strip_fixtures.json +57 -0
  15. package/dist/agent-src/skills/humanizer/references/fixtures.md +54 -0
  16. package/dist/agent-src/skills/judge-spec-compliance/SKILL.md +154 -0
  17. package/dist/agent-src/skills/judge-synthesis/SKILL.md +45 -0
  18. package/dist/agent-src/skills/roadmap-writing/SKILL.md +18 -18
  19. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  20. package/dist/agent-src/templates/roadmaps.md +8 -0
  21. package/dist/cli/registry.js +2 -0
  22. package/dist/cli/registry.js.map +1 -1
  23. package/dist/cli-delegate/{chunk-MMSGVZKV.js → chunk-77GR3VD4.js} +65 -40
  24. package/dist/cli-delegate/{chunk-Q26HT4QT.js → chunk-E46KPN6K.js} +251 -150
  25. package/dist/cli-delegate/{chunk-EEJUMCDZ.js → chunk-PLSG6UL5.js} +1 -1
  26. package/dist/cli-delegate/cmd_conformance.js +89 -13
  27. package/dist/cli-delegate/cmd_doctor.js +3 -3
  28. package/dist/cli-delegate/cmd_handoff.js +2 -2
  29. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  30. package/dist/cli-delegate/cmd_route_audit.js +1 -1
  31. package/dist/cli-delegate/cmd_settings_get.js +1 -1
  32. package/dist/cli-delegate/cmd_settings_set.js +1 -1
  33. package/dist/discovery/deprecation-report.md +1 -1
  34. package/dist/discovery/discovery-manifest.json +37 -15
  35. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  36. package/dist/discovery/discovery-manifest.summary.md +3 -3
  37. package/dist/discovery/dormancy-report.md +1 -1
  38. package/dist/discovery/orphan-report.md +1 -1
  39. package/dist/discovery/packs.json +6 -5
  40. package/dist/discovery/trust-report.md +2 -2
  41. package/dist/discovery/workspaces.json +5 -4
  42. package/dist/hooks/dispatch.js +562 -204
  43. package/dist/mcp/registry-manifest.json +3 -3
  44. package/dist/mcp/server.json +2 -2
  45. package/dist/mcp/server.mjs +808 -331
  46. package/dist/scripts/_lib/claude_plugin.js +162 -0
  47. package/dist/scripts/_lib/claude_plugin.js.map +1 -0
  48. package/dist/scripts/_lib/environment_detector.js +397 -0
  49. package/dist/scripts/_lib/environment_detector.js.map +1 -0
  50. package/dist/scripts/_lib/spawn_env.js +129 -0
  51. package/dist/scripts/_lib/spawn_env.js.map +1 -0
  52. package/dist/scripts/ai_council/modes.js +199 -0
  53. package/dist/scripts/ai_council/modes.js.map +1 -0
  54. package/dist/scripts/ai_council/transport_resolver.js +418 -0
  55. package/dist/scripts/ai_council/transport_resolver.js.map +1 -0
  56. package/dist/server/routes/wizard.js +3 -2
  57. package/dist/server/routes/wizard.js.map +1 -1
  58. package/dist/ui/assets/index-Cxgy63kz.js +26 -0
  59. package/dist/ui/assets/index-Cxgy63kz.js.map +1 -0
  60. package/dist/ui/index.html +1 -1
  61. package/docs/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
  62. package/docs/guidelines/agent-infra/untrusted-input-spotlighting.md +17 -0
  63. package/package.json +7 -3
  64. package/src/config/estate-count-budget.json +13 -744
  65. package/src/config/evaluator-budgets.json +4 -4
  66. package/src/config/gate-coverage.yml +247 -9
  67. package/src/config/gate-violation-baselines.json +72 -72
  68. package/src/config/publish-surface.json +60 -0
  69. package/src/config/requirements-trace-budget.json +32 -0
  70. package/src/config/rule-stub-ceilings.json +8 -1
  71. package/src/scripts/_dispatch.bash +7 -0
  72. package/src/scripts/_lib/base_tree.ts +175 -0
  73. package/src/scripts/_lib/billing_grant.ts +165 -0
  74. package/src/scripts/_lib/billing_grant_cli.ts +123 -0
  75. package/src/scripts/_lib/council_fallback_posture.ts +53 -6
  76. package/src/scripts/_lib/council_fallback_wiring.ts +61 -1
  77. package/src/scripts/_lib/host_capability.ts +59 -5
  78. package/src/scripts/_lib/quota_parked.ts +133 -0
  79. package/src/scripts/_lib/retrieval_sanitize.ts +62 -0
  80. package/src/scripts/_lib/review_telemetry.ts +196 -0
  81. package/src/scripts/_lib/subagent_response.ts +92 -0
  82. package/src/scripts/adr/regenerate_index.ts +14 -7
  83. package/src/scripts/ai_council/clients.ts +12 -1
  84. package/src/scripts/ai_council/config.ts +72 -115
  85. package/src/scripts/ai_council/fallback_config.ts +19 -7
  86. package/src/scripts/ai_council/mid_flight_fallback.ts +88 -7
  87. package/src/scripts/ai_council/orchestrator.ts +2 -2
  88. package/src/scripts/ai_council/py_format.ts +124 -0
  89. package/src/scripts/ai_council/transport_resolver.ts +65 -2
  90. package/src/scripts/audit_adr_coverage.ts +33 -6
  91. package/src/scripts/check_council_pin_staleness.ts +300 -0
  92. package/src/scripts/check_estate_count.ts +420 -293
  93. package/src/scripts/check_gate_coverage.ts +91 -0
  94. package/src/scripts/check_no_stub_inventory_table.ts +292 -0
  95. package/src/scripts/check_pack_size.ts +234 -1
  96. package/src/scripts/check_publish_surface.ts +297 -0
  97. package/src/scripts/check_requirements_trace.ts +378 -0
  98. package/src/scripts/check_secret_leak.ts +166 -12
  99. package/src/scripts/code_graph/cli.ts +44 -5
  100. package/src/scripts/code_graph/extract.ts +87 -0
  101. package/src/scripts/council_cli.ts +12 -16
  102. package/src/scripts/detect_ai_tells.ts +87 -0
  103. package/src/scripts/dispatch_r2_reviewer.ts +42 -0
  104. package/src/scripts/generate_capabilities_index.ts +41 -0
  105. package/src/scripts/git_authorization_hook.ts +54 -4
  106. package/src/scripts/hooks/block_unauthorized_git.ts +19 -1
  107. package/src/scripts/hooks/run_continuation_hook.ts +3 -1
  108. package/src/scripts/hooks/subagent_ledger_hook.ts +76 -11
  109. package/src/scripts/injection_scan_hook.ts +120 -10
  110. package/src/scripts/lint_adr_sweep_routing.ts +365 -0
  111. package/src/scripts/lint_workflow_security.ts +53 -10
  112. package/src/scripts/lint_workflow_security_allowlist.json +2 -18
  113. package/src/scripts/report_envelope_rate.ts +166 -0
  114. package/src/scripts/review_axis_report.ts +218 -0
  115. package/src/scripts/run_supervise.ts +46 -1
  116. package/src/scripts/schemas/evals.schema.json +5 -0
  117. package/src/scripts/sync_pr_branch.ts +14 -7
  118. package/dist/cli/commands/commands.candidates.test.js +0 -257
  119. package/dist/cli/commands/commands.candidates.test.js.map +0 -1
  120. package/dist/cli/commands/profiles.test.js +0 -88
  121. package/dist/cli/commands/profiles.test.js.map +0 -1
  122. package/dist/cli/commands/recordTriggerEval.test.js +0 -113
  123. package/dist/cli/commands/recordTriggerEval.test.js.map +0 -1
  124. package/dist/cli/configRoot.test.js +0 -97
  125. package/dist/cli/configRoot.test.js.map +0 -1
  126. package/dist/cli/mcp/content.test.js +0 -54
  127. package/dist/cli/mcp/content.test.js.map +0 -1
  128. package/dist/cli/mcp/dispatch.test.js +0 -108
  129. package/dist/cli/mcp/dispatch.test.js.map +0 -1
  130. package/dist/server/writeRoot.test.js +0 -91
  131. package/dist/server/writeRoot.test.js.map +0 -1
  132. package/dist/shared/capabilities.test.js +0 -39
  133. package/dist/shared/capabilities.test.js.map +0 -1
  134. package/dist/ui/assets/index-C1pBRm1f.js +0 -26
  135. package/dist/ui/assets/index-C1pBRm1f.js.map +0 -1
  136. /package/dist/cli-delegate/{chunk-N7CDDGI3.js → chunk-CYH5SP6M.js} +0 -0
@@ -26,7 +26,7 @@ import {
26
26
  projectStoreSlug,
27
27
  scanTranscripts,
28
28
  weightedInputUnits
29
- } from "./chunk-MMSGVZKV.js";
29
+ } from "./chunk-77GR3VD4.js";
30
30
  import {
31
31
  git_common_dir
32
32
  } from "./chunk-E4XIZDIB.js";
@@ -36,14 +36,14 @@ import {
36
36
  frontmatterPaths,
37
37
  proseEqual,
38
38
  splitFrontmatter
39
- } from "./chunk-EEJUMCDZ.js";
39
+ } from "./chunk-PLSG6UL5.js";
40
40
  import "./chunk-FTAISGDQ.js";
41
41
  import "./chunk-M2DPGFZ4.js";
42
- import "./chunk-Q26HT4QT.js";
42
+ import "./chunk-E46KPN6K.js";
43
43
  import {
44
44
  projectStoreSlug,
45
45
  resolveSessionRole
46
- } from "./chunk-MMSGVZKV.js";
46
+ } from "./chunk-77GR3VD4.js";
47
47
  import {
48
48
  atomic_write_json,
49
49
  atomic_write_text,
@@ -704,6 +704,7 @@ var ALL_OPS = [
704
704
  "branch",
705
705
  "pr-create",
706
706
  "pr-merge",
707
+ "pr-merge-auto",
707
708
  "tag",
708
709
  "release",
709
710
  "publish"
@@ -717,8 +718,29 @@ var PHRASES = [
717
718
  op: "pr-create",
718
719
  re: /\b(erstell(e|en)?|mach(e|en)?|leg(e|en)?\s+an|(er)?(ö|oe)ffne|open|create|raise|aufmachen)\b[^.\n]{0,30}\b(pr|pull[- ]request)\b|\b(pr|pull[- ]request)\b[^.\n]{0,20}\b(erstellen|aufmachen|anlegen|(er)?(ö|oe)ffnen)\b/i
719
720
  },
720
- // `merge` as an ACTION, never as the noun in "merge conflict" / "merge commit".
721
- { op: "pr-merge", re: /\b(merge|merg(e|en|st|t)|zusammenf(ü|ue)hren|reinmergen)\b(?!\s*[- ]?(conflict|konflikt|commit|base|queue|state|status))/i },
721
+ // `merge` as an ACTION, never as the noun in "merge conflict" / "merge commit",
722
+ // and never under a NEGATION.
723
+ //
724
+ // The negation half closes a measured defect: probed directly against
725
+ // `classifyAuthorization`, "nicht mergen", "don't merge this" and
726
+ // "never auto-merge" each returned ["pr-merge"] — a prompt saying DO NOT
727
+ // MERGE authorized a merge. The noun-sense lookahead was never a negator.
728
+ //
729
+ // The lookBEHIND is line-scoped by `[^.!?\n]` on purpose, the same scoping
730
+ // `turn_end_gate_hook.ts` uses for its own negation exclusion (`:330`) and
731
+ // its negated-claim window (`:490-493`). A sentence boundary ends a
732
+ // negation's reach: "Do not push. Merge PR #12." is two instructions, and a
733
+ // guard that let the first suppress the second would silently stop
734
+ // authorizing merges the user DID order — the failure mode that is worse
735
+ // than the defect, because nothing happens and nothing says why.
736
+ //
737
+ // Reusing that vocabulary rather than inventing a third is deliberate: two
738
+ // negation vocabularies in one tree drift, and the drift is invisible until
739
+ // a prompt lands in the gap between them.
740
+ {
741
+ op: "pr-merge",
742
+ re: /(?<!\b(nicht|nichts|kein(e|en|em|er|es)?|niemals|nie|no|not|dont|don't|never|without|ohne)\b[^.!?\n]{0,30})\b(merge|merg(e|en|st|t)|zusammenf(ü|ue)hren|reinmergen)\b(?!\s*[- ]?(conflict|konflikt|commit|base|queue|state|status))/i
743
+ },
722
744
  // A tag is an ACTION here — bare "Tag" is the German word for day, and
723
745
  // "Version" is an ordinary noun. Both authorized a BLOCK op before this.
724
746
  { op: "tag", re: /\b(tagge(n|st)?|tag\s+(setzen|anlegen|erstellen)|git\s+tag|--tags|--follow-tags)\b/i },
@@ -761,6 +783,16 @@ var PASTED_COMMANDS = [
761
783
  { op: "publish", re: /\bnpm\s+publish\b/i },
762
784
  { op: "tag", re: /\bgit\s+push\s+[^\n]*--tags\b|\bgit\s+tag\s+-a\b/i },
763
785
  { op: "release", re: /\bgh\s+release\s+create\b/i },
786
+ // ORDER IS LOAD-BEARING: the auto variants precede the plain merge, because
787
+ // the first match wins and `gh pr merge 12 --auto` also matches the plain
788
+ // pattern. Same rule the block-side table states for `git push --tags`.
789
+ //
790
+ // The DE-ESCALATING forms come first of all, and they map to no op at all:
791
+ // `--disable-auto` and `disablePullRequestAutoMerge` turn the capability OFF.
792
+ // Requiring merge authorization to switch auto-merge off is a live deadlock,
793
+ // and it is why this cannot ship after the split rather than with it.
794
+ { op: null, re: /\bgh\s+pr\s+merge\b[^\n]*--disable-auto\b|\bdisablePullRequestAutoMerge\b/i },
795
+ { op: "pr-merge-auto", re: /\bgh\s+pr\s+merge\b[^\n]*--auto\b|\benablePullRequestAutoMerge\b/i },
764
796
  { op: "pr-merge", re: /\bgh\s+pr\s+merge\b/i },
765
797
  { op: "pr-create", re: /\bgh\s+pr\s+create\b/i },
766
798
  { op: "push", re: /\bgit\s+push\b/i },
@@ -796,10 +828,12 @@ function classifyAuthorization(prompt) {
796
828
  }
797
829
  for (const line of _commandLines(fence)) {
798
830
  for (const { op, re } of PASTED_COMMANDS) {
799
- if (re.test(line)) {
831
+ if (!re.test(line)) continue;
832
+ if (op !== null) {
800
833
  authorized.add(op);
801
834
  evidence[op] = `pasted command: "${line.slice(0, 80)}"`;
802
835
  }
836
+ break;
803
837
  }
804
838
  }
805
839
  }
@@ -933,7 +967,10 @@ var BLOCK_OPS = /* @__PURE__ */ new Set([
933
967
  "publish",
934
968
  "tag",
935
969
  "release",
936
- "pr-merge"
970
+ "pr-merge",
971
+ // Enabling auto-merge commits the outcome to a condition the agent does not
972
+ // control, so it is blocked on the same terms as the merge it schedules.
973
+ "pr-merge-auto"
937
974
  ]);
938
975
  var WARN_OPS = /* @__PURE__ */ new Set([
939
976
  "commit",
@@ -959,10 +996,25 @@ var COMMAND_OPS = [
959
996
  op: "tag",
960
997
  re: new RegExp(`${P}git\\s+${G}push\\b[^\\n;|&]*(--tags|--follow-tags|refs\\/tags\\/)`, "i")
961
998
  },
999
+ // ORDER IS LOAD-BEARING, per this table's own rule that the most specific
1000
+ // pattern wins: `gh pr merge 12 --auto` matches the plain merge pattern too.
1001
+ //
1002
+ // The GraphQL mutation needs its OWN pattern rather than a widening of
1003
+ // `ghApiWrite()`. That helper requires BOTH a REST-shaped path and an
1004
+ // explicit write method, and `gh api graphql -f query='mutation{...}'` has
1005
+ // neither — widening it to reach this would loosen every other op that uses
1006
+ // it, which is a bigger change than the defect.
1007
+ {
1008
+ op: "pr-merge-auto",
1009
+ re: new RegExp(
1010
+ `${P}gh\\s+pr\\s+merge\\b(?=[^\\n]*--auto\\b)|${P}gh\\s+api\\b(?=[^\\n]*enablePullRequestAutoMerge\\b)`,
1011
+ "i"
1012
+ )
1013
+ },
962
1014
  {
963
1015
  op: "pr-merge",
964
1016
  re: new RegExp(
965
- `${P}gh\\s+pr\\s+merge\\b|${ghApiWrite("\\/pulls\\/\\d+\\/merge\\b").source}`,
1017
+ `${P}gh\\s+pr\\s+merge\\b(?![^\\n]*--(auto|disable-auto)\\b)|${ghApiWrite("\\/pulls\\/\\d+\\/merge\\b").source}`,
966
1018
  "i"
967
1019
  )
968
1020
  },
@@ -1691,6 +1743,18 @@ var MAX_RESPONSE_ENTRIES = 40;
1691
1743
  var MAX_ARTIFACT_REF_CHARS = 200;
1692
1744
  var MAX_ENVELOPE_CHARS = 12e3;
1693
1745
  var CONFIDENCE = /* @__PURE__ */ new Set(["low", "medium", "high"]);
1746
+ var RESPONSE_REQUIRED_FIELDS = [
1747
+ "summary",
1748
+ "handoff",
1749
+ "confidence",
1750
+ "findings",
1751
+ "risks"
1752
+ ];
1753
+ function countContractFields(input) {
1754
+ if (input === null || typeof input !== "object") return 0;
1755
+ const r = input;
1756
+ return RESPONSE_REQUIRED_FIELDS.filter((k) => Object.hasOwn(r, k)).length;
1757
+ }
1694
1758
  function validateResponse(input) {
1695
1759
  const errors = [];
1696
1760
  if (input === null || typeof input !== "object") {
@@ -1804,16 +1868,25 @@ function extractParentId(payload, ownId) {
1804
1868
  return null;
1805
1869
  }
1806
1870
  function classifyEnvelope(message) {
1807
- if (message === null || !message.trim()) return { verdict: "no_message", error_count: 0 };
1871
+ if (message === null || !message.trim()) {
1872
+ return { verdict: "no_message", error_count: 0, field_hits: 0 };
1873
+ }
1808
1874
  const candidates = _jsonObjectCandidates(message);
1809
- if (candidates.length === 0) return { verdict: "no_envelope", error_count: 0 };
1875
+ if (candidates.length === 0) return { verdict: "no_envelope", error_count: 0, field_hits: 0 };
1810
1876
  let best = null;
1811
1877
  for (const candidate of candidates) {
1812
1878
  const result = validateResponse(candidate);
1813
- if (result.valid) return { verdict: "ok", error_count: 0 };
1814
- if (best === null) best = { verdict: "fail", error_count: result.errors.length };
1879
+ const fieldHits = countContractFields(candidate);
1880
+ if (result.valid) return { verdict: "ok", error_count: 0, field_hits: fieldHits };
1881
+ if (best === null || fieldHits > best.field_hits) {
1882
+ best = {
1883
+ verdict: fieldHits === 0 ? "foreign_object" : "fail",
1884
+ error_count: result.errors.length,
1885
+ field_hits: fieldHits
1886
+ };
1887
+ }
1815
1888
  }
1816
- return best ?? { verdict: "no_envelope", error_count: 0 };
1889
+ return best ?? { verdict: "no_envelope", error_count: 0, field_hits: 0 };
1817
1890
  }
1818
1891
  function _jsonObjectCandidates(message) {
1819
1892
  const texts = [];
@@ -2083,6 +2156,9 @@ function handleStop(root, payload, nowIso, sessionId) {
2083
2156
  start_seen: rec !== null,
2084
2157
  envelope_parse: parse2.verdict,
2085
2158
  envelope_error_count: parse2.error_count,
2159
+ // Beside the count, never instead of it: the count says how wrong the
2160
+ // candidate was, this says whether it was aimed at the envelope.
2161
+ envelope_field_hits: parse2.field_hits,
2086
2162
  concurrent_open: countOpen(root)
2087
2163
  });
2088
2164
  }
@@ -66,11 +66,11 @@ import {
66
66
  _wizard_state_path,
67
67
  main,
68
68
  shutilWhich
69
- } from "./chunk-EEJUMCDZ.js";
69
+ } from "./chunk-PLSG6UL5.js";
70
70
  import "./chunk-FTAISGDQ.js";
71
71
  import "./chunk-M2DPGFZ4.js";
72
- import "./chunk-Q26HT4QT.js";
73
- import "./chunk-MMSGVZKV.js";
72
+ import "./chunk-E46KPN6K.js";
73
+ import "./chunk-77GR3VD4.js";
74
74
  import "./chunk-E4XIZDIB.js";
75
75
  import "./chunk-PMEKGDED.js";
76
76
  import "./chunk-MWRD5YOH.js";
@@ -12,7 +12,7 @@ import {
12
12
  collectRepoAnchor,
13
13
  describeDrift
14
14
  } from "./chunk-LPPWO5CE.js";
15
- import "./chunk-N7CDDGI3.js";
15
+ import "./chunk-CYH5SP6M.js";
16
16
  import "./chunk-I3EIN2YG.js";
17
17
  import {
18
18
  hasBoundaryMarker,
@@ -27,7 +27,7 @@ import {
27
27
  _RAW_KEY_PREFIXES,
28
28
  hardenedSpawnEnv,
29
29
  projectStoreSlug
30
- } from "./chunk-MMSGVZKV.js";
30
+ } from "./chunk-77GR3VD4.js";
31
31
  import "./chunk-E4XIZDIB.js";
32
32
  import "./chunk-OY53J6II.js";
33
33
  import "./chunk-NLP54U3J.js";
@@ -2,7 +2,7 @@
2
2
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
3
3
  import {
4
4
  memory_get_v1
5
- } from "./chunk-N7CDDGI3.js";
5
+ } from "./chunk-CYH5SP6M.js";
6
6
  import "./chunk-I3EIN2YG.js";
7
7
  import "./chunk-OY53J6II.js";
8
8
  import "./chunk-J55WI3RR.js";
@@ -3,7 +3,7 @@ import { createRequire as __acCreateRequire } from 'node:module'; const require
3
3
  import {
4
4
  read_entries
5
5
  } from "./chunk-PKOBQADP.js";
6
- import "./chunk-N7CDDGI3.js";
6
+ import "./chunk-CYH5SP6M.js";
7
7
  import "./chunk-I3EIN2YG.js";
8
8
  import "./chunk-F7DQWYR5.js";
9
9
  import {
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-BWMXLD4B.js";
8
8
  import {
9
9
  load
10
- } from "./chunk-Q26HT4QT.js";
10
+ } from "./chunk-E46KPN6K.js";
11
11
  import {
12
12
  resolvePackageRoot
13
13
  } from "./chunk-MCJYCQPF.js";
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  dump,
9
9
  load
10
- } from "./chunk-Q26HT4QT.js";
10
+ } from "./chunk-E46KPN6K.js";
11
11
  import {
12
12
  external_exports,
13
13
  settingsSchema
@@ -1,6 +1,6 @@
1
1
  # Discovery — Deprecation Report
2
2
 
3
- - Generated: `2026-08-22T06:41:27Z`
3
+ - Generated: `2026-08-23T01:36:08Z`
4
4
  - Deprecated artefacts: **0**
5
5
 
6
6
  _None. Tree is clean._
@@ -1619,7 +1619,7 @@
1619
1619
  },
1620
1620
  {
1621
1621
  "category": "command",
1622
- "checksum": "sha256:053a01cc4bf22a427c5b57557d9f29e965f5047b441d80e7b3014b87d621720f",
1622
+ "checksum": "sha256:3f3603cffc4ab3fa39e5d390387405a7bcf6e4e8a6ccb041ce0664dd89402cbe",
1623
1623
  "install": {
1624
1624
  "default": true,
1625
1625
  "removable": false
@@ -2331,7 +2331,7 @@
2331
2331
  },
2332
2332
  {
2333
2333
  "category": "command",
2334
- "checksum": "sha256:fc3a03a9871c8be994cc949052454775e01d000225ca71e17cb9654395a0ad5d",
2334
+ "checksum": "sha256:643f29e9948bcfba5821ce94f40385c2e081e9946b212eec75068a0926736c5a",
2335
2335
  "install": {
2336
2336
  "default": true,
2337
2337
  "removable": false
@@ -5047,7 +5047,7 @@
5047
5047
  },
5048
5048
  {
5049
5049
  "category": "command",
5050
- "checksum": "sha256:3d31fb95f7dedb6493ff600354e15b0430095e44d5861c3b0689ca687b4ff643",
5050
+ "checksum": "sha256:7e6e8a0b299c7e62981fac7c089655889acfdce9065216bc6f64e70419a4fafc",
5051
5051
  "install": {
5052
5052
  "default": true,
5053
5053
  "removable": false
@@ -7981,7 +7981,7 @@
7981
7981
  },
7982
7982
  {
7983
7983
  "category": "rule",
7984
- "checksum": "sha256:76a67a41981481e4e612676182a4a02362b1560654e6af90c83d7b093935cb8b",
7984
+ "checksum": "sha256:c5ecb6ff43a08167af8d10918513bbb676aaaa22ad95d5ae4c9374d63fab5e98",
7985
7985
  "install": {
7986
7986
  "default": true,
7987
7987
  "removable": false
@@ -10503,7 +10503,7 @@
10503
10503
  },
10504
10504
  {
10505
10505
  "category": "skill",
10506
- "checksum": "sha256:9de67f05578d7d31285d05f6a57b98a9e45bcb04b6c2443a9e8b3bed77f6bfe9",
10506
+ "checksum": "sha256:0368becf6492e8a62ff7362aa05c9ac477e2c8021bf151af2c7c0a62c31f7544",
10507
10507
  "install": {
10508
10508
  "default": true,
10509
10509
  "removable": true
@@ -10833,7 +10833,29 @@
10833
10833
  },
10834
10834
  {
10835
10835
  "category": "skill",
10836
- "checksum": "sha256:cbd60fce9d2110615cf9e8094980f34cd96cd8f9c791379efed549198bd5eb7d",
10836
+ "checksum": "sha256:2027f1541a1c2272527b8c0649a450b4978e7b85c4516f09d6816d9b7264382e",
10837
+ "install": {
10838
+ "default": true,
10839
+ "removable": false
10840
+ },
10841
+ "lifecycle": "active",
10842
+ "name": "judge-spec-compliance",
10843
+ "packs": [
10844
+ "meta"
10845
+ ],
10846
+ "path": "src/skills/judge-spec-compliance/SKILL.md",
10847
+ "trust": {
10848
+ "confidence": "high",
10849
+ "human_review_required": false,
10850
+ "level": "core"
10851
+ },
10852
+ "workspaces": [
10853
+ "agent-config-maintainer"
10854
+ ]
10855
+ },
10856
+ {
10857
+ "category": "skill",
10858
+ "checksum": "sha256:1c4e10d4a7eaf0b978ac313408097a8e332b3df213750d4a03c21cc44391ed78",
10837
10859
  "install": {
10838
10860
  "default": true,
10839
10861
  "removable": false
@@ -13171,7 +13193,7 @@
13171
13193
  },
13172
13194
  {
13173
13195
  "category": "skill",
13174
- "checksum": "sha256:74c2eef3220e990c8458e473f2c6a6a5c1f8e2c84eaf7318e7ec309ebe6b795f",
13196
+ "checksum": "sha256:7767b0eb458f604c0fa53b4ceb7fd9b86090436502fa392fd8dddcd6bc76b482",
13175
13197
  "install": {
13176
13198
  "default": true,
13177
13199
  "removable": false
@@ -14508,7 +14530,7 @@
14508
14530
  "workspaces": []
14509
14531
  }
14510
14532
  ],
14511
- "checksum": "sha256:ea034289eb18c3e4ae6af47d8ddfbe489e739c0c80a1d659d180cf850d0e37b3",
14533
+ "checksum": "sha256:9317e131726d366f7508a28af162952845a4a5bbfdd0fee947504b3be5538ba4",
14512
14534
  "deprecations": [
14513
14535
  {
14514
14536
  "key": "tier",
@@ -14652,7 +14674,7 @@
14652
14674
  "reason": "scaffold template for ticket-bundle tickets (ADR-101); carries no runtime frontmatter — emit-tickets fills it in per ticket"
14653
14675
  }
14654
14676
  ],
14655
- "generated_at": "2026-08-22T06:41:27Z",
14677
+ "generated_at": "2026-08-23T01:36:08Z",
14656
14678
  "packs": [
14657
14679
  {
14658
14680
  "artefact_count": 119,
@@ -15401,7 +15423,7 @@
15401
15423
  },
15402
15424
  {
15403
15425
  "always_on": true,
15404
- "artefact_count": 298,
15426
+ "artefact_count": 299,
15405
15427
  "description": "Artefacts that maintain this package (agent-config itself).",
15406
15428
  "domain": "meta",
15407
15429
  "human_review_required": 0,
@@ -15417,7 +15439,7 @@
15417
15439
  "trust_level_default": "core",
15418
15440
  "trust_summary": {
15419
15441
  "advisory": 0,
15420
- "core": 296,
15442
+ "core": 297,
15421
15443
  "experimental": 2,
15422
15444
  "professional": 0,
15423
15445
  "restricted": 0
@@ -15510,25 +15532,25 @@
15510
15532
  "by_category": {
15511
15533
  "command": 201,
15512
15534
  "rule": 119,
15513
- "skill": 290,
15535
+ "skill": 291,
15514
15536
  "subagent": 1,
15515
15537
  "template": 1
15516
15538
  },
15517
15539
  "by_lifecycle": {
15518
- "active": 594,
15540
+ "active": 595,
15519
15541
  "archived": 0,
15520
15542
  "deprecated": 0,
15521
15543
  "experimental": 18
15522
15544
  },
15523
15545
  "by_trust_level": {
15524
15546
  "advisory": 8,
15525
- "core": 479,
15547
+ "core": 480,
15526
15548
  "experimental": 23,
15527
15549
  "professional": 102,
15528
15550
  "restricted": 0
15529
15551
  },
15530
15552
  "documented_unassigned_count": 26,
15531
- "total_artefacts": 612,
15553
+ "total_artefacts": 613,
15532
15554
  "unassigned_count": 0
15533
15555
  },
15534
15556
  "unassigned": [],
@@ -1 +1 @@
1
- 833e1a5e13e7d2bd453c29cbd70c2937d5feac8442880ae4ae5bfdd78730be7d discovery-manifest.json
1
+ efc3278aa30ad052615e0b4b185fe3e8eefce39ed3a2ba2e1015fc4032ae688a discovery-manifest.json
@@ -1,8 +1,8 @@
1
1
  # Discovery Manifest — Summary
2
2
 
3
- - Generated: `2026-08-22T06:41:27Z`
3
+ - Generated: `2026-08-23T01:36:08Z`
4
4
  - Scanner: `de0a22b4ac4c`
5
- - Artefacts: **612**
5
+ - Artefacts: **613**
6
6
  - Unassigned: **0**
7
7
 
8
8
  ## `engineering` — Engineering
@@ -106,7 +106,7 @@
106
106
 
107
107
  | Pack | Artefacts |
108
108
  |---|---|
109
- | `meta` — Meta | 298 |
109
+ | `meta` — Meta | 299 |
110
110
  | `memory` — Memory | 9 |
111
111
  | `analytics` — Analytics | 4 |
112
112
  | `product-reasoning` — Product Reasoning | 11 |
@@ -1,6 +1,6 @@
1
1
  # Discovery — Dormancy Report
2
2
 
3
- - Generated: `2026-08-22T06:41:27Z`
3
+ - Generated: `2026-08-23T01:36:08Z`
4
4
  - Window: **6 months** without a commit
5
5
 
6
6
  > Dormancy triggers **review, never auto-deprecation**
@@ -1,6 +1,6 @@
1
1
  # Discovery — Orphan Report
2
2
 
3
- - Generated: `2026-08-22T06:41:27Z`
3
+ - Generated: `2026-08-23T01:36:08Z`
4
4
  - Orphan artefacts: **0**
5
5
 
6
6
  > An orphan is an artefact whose declared pack has no other members.
@@ -1,6 +1,6 @@
1
1
  {
2
- "checksum": "sha256:ea034289eb18c3e4ae6af47d8ddfbe489e739c0c80a1d659d180cf850d0e37b3",
3
- "generated_at": "2026-08-22T06:41:27Z",
2
+ "checksum": "sha256:9317e131726d366f7508a28af162952845a4a5bbfdd0fee947504b3be5538ba4",
3
+ "generated_at": "2026-08-23T01:36:08Z",
4
4
  "packs": [
5
5
  {
6
6
  "always_on": false,
@@ -1358,7 +1358,7 @@
1358
1358
  },
1359
1359
  {
1360
1360
  "always_on": true,
1361
- "artefact_count": 298,
1361
+ "artefact_count": 299,
1362
1362
  "artefacts": [
1363
1363
  "src/agent-src/templates/agents/proposal.example.md",
1364
1364
  "src/domains/ai-video/image/analyse/command.md",
@@ -1615,6 +1615,7 @@
1615
1615
  "src/skills/judge-code-quality/SKILL.md",
1616
1616
  "src/skills/judge-injection-defense/SKILL.md",
1617
1617
  "src/skills/judge-security-auditor/SKILL.md",
1618
+ "src/skills/judge-spec-compliance/SKILL.md",
1618
1619
  "src/skills/judge-synthesis/SKILL.md",
1619
1620
  "src/skills/judge-test-coverage/SKILL.md",
1620
1621
  "src/skills/learning-to-rule-or-skill/SKILL.md",
@@ -1660,14 +1661,14 @@
1660
1661
  "src/skills/verify-repair-loop/SKILL.md"
1661
1662
  ],
1662
1663
  "by_lifecycle": {
1663
- "active": 297,
1664
+ "active": 298,
1664
1665
  "archived": 0,
1665
1666
  "deprecated": 0,
1666
1667
  "experimental": 1
1667
1668
  },
1668
1669
  "by_trust_level": {
1669
1670
  "advisory": 0,
1670
- "core": 296,
1671
+ "core": 297,
1671
1672
  "experimental": 2,
1672
1673
  "professional": 0,
1673
1674
  "restricted": 0
@@ -1,6 +1,6 @@
1
1
  # Discovery — Trust Report
2
2
 
3
- - Generated: `2026-08-22T06:41:27Z`
3
+ - Generated: `2026-08-23T01:36:08Z`
4
4
  - Workspaces tracked: **10**
5
5
  - Human-review-required artefacts: **3**
6
6
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  | Workspace | core | professional | experimental | advisory | restricted |
10
10
  |---|---|---|---|---|---|
11
- | `agent-config-maintainer` | 328 | 0 | 3 | 0 | 0 |
11
+ | `agent-config-maintainer` | 329 | 0 | 3 | 0 | 0 |
12
12
  | `construction` | 27 | 0 | 0 | 0 | 0 |
13
13
  | `engineering` | 192 | 62 | 4 | 0 | 0 |
14
14
  | `finance` | 30 | 4 | 0 | 1 | 0 |
@@ -1,6 +1,6 @@
1
1
  {
2
- "checksum": "sha256:ea034289eb18c3e4ae6af47d8ddfbe489e739c0c80a1d659d180cf850d0e37b3",
3
- "generated_at": "2026-08-22T06:41:27Z",
2
+ "checksum": "sha256:9317e131726d366f7508a28af162952845a4a5bbfdd0fee947504b3be5538ba4",
3
+ "generated_at": "2026-08-23T01:36:08Z",
4
4
  "scanner_version": "de0a22b4ac4c",
5
5
  "workspaces": [
6
6
  {
@@ -639,7 +639,7 @@
639
639
  ]
640
640
  },
641
641
  {
642
- "artefact_count": 322,
642
+ "artefact_count": 323,
643
643
  "default_packs": [
644
644
  "meta",
645
645
  "memory",
@@ -652,7 +652,7 @@
652
652
  "optional_packs": [],
653
653
  "packs": [
654
654
  {
655
- "artefact_count": 298,
655
+ "artefact_count": 299,
656
656
  "artefacts": [
657
657
  "src/agent-src/templates/agents/proposal.example.md",
658
658
  "src/domains/ai-video/image/analyse/command.md",
@@ -909,6 +909,7 @@
909
909
  "src/skills/judge-code-quality/SKILL.md",
910
910
  "src/skills/judge-injection-defense/SKILL.md",
911
911
  "src/skills/judge-security-auditor/SKILL.md",
912
+ "src/skills/judge-spec-compliance/SKILL.md",
912
913
  "src/skills/judge-synthesis/SKILL.md",
913
914
  "src/skills/judge-test-coverage/SKILL.md",
914
915
  "src/skills/learning-to-rule-or-skill/SKILL.md",