@event4u/agent-config 9.33.0 → 9.35.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +154 -145
- package/CONTRIBUTING.md +23 -14
- package/dist/agent-src/commands/agent-handoff.md +15 -3
- package/dist/agent-src/commands/roadmap/next.md +37 -5
- package/dist/agent-src/scripts/archive_completed_roadmaps.ts +35 -1
- package/dist/agent-src/scripts/roadmap_gates.ts +119 -4
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +21 -12
- package/dist/agent-src/skills/design-tokens/SKILL.md +15 -0
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +24 -0
- package/dist/agent-src/skills/rule-writing/SKILL.md +23 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +80 -2
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +5 -3
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +24 -0
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +25 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/scripts/memory_lookup.ts +1 -2
- package/dist/agent-src/templates/scripts/memory_signal.ts +2 -4
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/decision_gate.ts +35 -5
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/staged_confirmation.ts +252 -0
- package/dist/agent-src/templates/scripts/work_engine/hooks/builtin/staged_confirmation_store.ts +307 -0
- package/dist/cli/registry.js +2 -2
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/{chunk-PMQ6Z3T3.js → chunk-2TGMGLBL.js} +11 -4
- package/dist/cli-delegate/{chunk-YPAWXXXR.js → chunk-55RI5UXK.js} +17 -0
- package/dist/cli-delegate/{chunk-MA4GFWDY.js → chunk-H6F2CQFI.js} +1 -1
- package/dist/cli-delegate/{chunk-2WELHO3P.js → chunk-I5EAFRII.js} +35 -0
- package/dist/cli-delegate/{chunk-3EWYC3YK.js → chunk-UEZ7D35A.js} +4 -3
- package/dist/cli-delegate/{chunk-UVKNIJH2.js → chunk-ZAXH3ZWU.js} +3 -0
- package/dist/cli-delegate/cmd_conformance.js +2 -2
- package/dist/cli-delegate/cmd_doctor.js +2 -2
- package/dist/cli-delegate/cmd_export.js +2 -2
- package/dist/cli-delegate/cmd_handoff.js +3 -3
- package/dist/cli-delegate/cmd_memory_get.js +1 -1
- package/dist/cli-delegate/cmd_prune.js +2 -2
- package/dist/cli-delegate/cmd_route_audit.js +1 -1
- package/dist/cli-delegate/cmd_session_recycle.js +7 -2
- package/dist/cli-delegate/cmd_settings_migrate.js +2 -2
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +2 -2
- package/dist/cli-delegate/cmd_uninstall.js +2 -2
- package/dist/cli-delegate/cmd_validate.js +2 -2
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +13 -13
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +2 -2
- package/dist/discovery/dormancy-report.md +17 -0
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +3 -3
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +3 -3
- package/dist/hooks/dispatch.js +355 -85
- package/dist/install/install.mjs +3 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +192 -12
- package/dist/server/schemas/settings.js +1 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/contracts/settings-classes.md +3 -2
- package/docs/guidelines/agent-infra/failure-signatures.md +47 -12
- package/package.json +2 -2
- package/src/agent-src/scripts/archive_completed_roadmaps.ts +35 -1
- package/src/agent-src/scripts/roadmap_gates.ts +119 -4
- package/src/agent-src/templates/scripts/memory_lookup.ts +1 -2
- package/src/agent-src/templates/scripts/memory_signal.ts +2 -4
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_gate.ts +35 -5
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/staged_confirmation.ts +252 -0
- package/src/agent-src/templates/scripts/work_engine/hooks/builtin/staged_confirmation_store.ts +307 -0
- package/src/config/agent-settings.template.yml +11 -2
- package/src/config/quorum-attendance-budget.json +11 -3
- package/src/scripts/_cli/cmd_session_recycle.ts +6 -1
- package/src/scripts/_dispatch.bash +6 -2
- package/src/scripts/_lib/env_kill_switch.ts +37 -0
- package/src/scripts/_lib/security_lint.ts +18 -4
- package/src/scripts/_lib/self_repair.ts +60 -0
- package/src/scripts/_lib/self_repair_store.ts +65 -5
- package/src/scripts/_lib/session_register.ts +67 -1
- package/src/scripts/_lib/subagent_capsule.ts +78 -1
- package/src/scripts/ai_council/config.ts +60 -0
- package/src/scripts/ai_council/events_log.ts +105 -6
- package/src/scripts/ai_council/orchestrator.ts +38 -0
- package/src/scripts/ai_council/prompts.ts +165 -3
- package/src/scripts/ai_council/quorum.ts +87 -0
- package/src/scripts/ai_team/review_gate.ts +2 -2
- package/src/scripts/build_discovery_manifest.ts +165 -0
- package/src/scripts/check_claims.ts +51 -2
- package/src/scripts/ci_time_ratio.ts +3 -1
- package/src/scripts/council_cli.ts +36 -1
- package/src/scripts/discovery_graph.ts +201 -27
- package/src/scripts/dispatch_r2_reviewer.ts +102 -1
- package/src/scripts/hooks/turn_end_gate_hook.ts +172 -11
- package/src/scripts/lint_framework_leakage.ts +195 -28
- package/src/scripts/lint_framework_leakage_allowlist.json +94 -86
- package/src/scripts/lint_handoffs.ts +92 -2
- package/src/scripts/lint_hedge_words.ts +317 -0
- package/src/scripts/lint_mcp_config_security.ts +1 -1
- package/src/scripts/lint_skill_frontmatter_safety.ts +1 -1
- package/src/scripts/memory_lookup.ts +1 -2
- package/src/scripts/schemas/command.schema.json +4 -0
- package/src/scripts/schemas/skill.schema.json +4 -0
- package/src/scripts/self_repair_cli.ts +26 -1
- package/src/scripts/session_register_hook.ts +238 -18
- package/src/scripts/sessions_cli.ts +377 -12
- package/src/scripts/skill_linter.ts +58 -2
- package/src/server/schemas/settings.ts +3 -0
|
@@ -28,6 +28,11 @@ var import_yaml = __toESM(require_dist(), 1);
|
|
|
28
28
|
import * as fs from "node:fs";
|
|
29
29
|
import * as os from "node:os";
|
|
30
30
|
import * as path from "node:path";
|
|
31
|
+
|
|
32
|
+
// src/scripts/ai_council/quorum.ts
|
|
33
|
+
var SOLO_FLOOR_MIN_PRESENT = 2;
|
|
34
|
+
|
|
35
|
+
// src/scripts/ai_council/config.ts
|
|
31
36
|
var _VALID_PROVIDERS = /* @__PURE__ */ new Set([
|
|
32
37
|
"anthropic",
|
|
33
38
|
"openai",
|
|
@@ -344,6 +349,9 @@ function _build_config(raw, source_path) {
|
|
|
344
349
|
_asDict(_getOr(raw, "cli_call_budget", {}))
|
|
345
350
|
);
|
|
346
351
|
const quorum = _build_quorum(_get(raw, "quorum", "majority"));
|
|
352
|
+
const quorum_min_present = _build_quorum_min_present(
|
|
353
|
+
_get(raw, "quorum_min_present", SOLO_FLOOR_MIN_PRESENT)
|
|
354
|
+
);
|
|
347
355
|
const necessity_classifier = _build_necessity_classifier(
|
|
348
356
|
_asDict(_getOr(raw, "necessity_classifier", {}))
|
|
349
357
|
);
|
|
@@ -392,6 +400,7 @@ function _build_config(raw, source_path) {
|
|
|
392
400
|
consensus_scoring: consensus,
|
|
393
401
|
cli_call_budget,
|
|
394
402
|
quorum,
|
|
403
|
+
quorum_min_present,
|
|
395
404
|
necessity_classifier,
|
|
396
405
|
model_downgrade,
|
|
397
406
|
debate,
|
|
@@ -1219,6 +1228,14 @@ function _build_quorum(raw) {
|
|
|
1219
1228
|
`\`quorum\`=${_pyRepr(raw)} must be 'majority' or an integer >= 1 (got ${_pyTypeName(raw)}).`
|
|
1220
1229
|
);
|
|
1221
1230
|
}
|
|
1231
|
+
function _build_quorum_min_present(raw) {
|
|
1232
|
+
if (_isInt(raw) && raw >= 1) {
|
|
1233
|
+
return raw;
|
|
1234
|
+
}
|
|
1235
|
+
throw new CouncilConfigError(
|
|
1236
|
+
`\`quorum_min_present\`=${_pyRepr(raw)} must be an integer >= 1 (got ${_pyTypeName(raw)}).`
|
|
1237
|
+
);
|
|
1238
|
+
}
|
|
1222
1239
|
function _build_advisor(name, cfg) {
|
|
1223
1240
|
if (!_isDict(cfg)) {
|
|
1224
1241
|
throw new CouncilConfigError(`advisors.${name}: must be a mapping.`);
|
|
@@ -449,6 +449,38 @@ function hasBoundaryMarker(block) {
|
|
|
449
449
|
// outside the datamarking while still riding in the same block.
|
|
450
450
|
block.trimEnd().endsWith(ENVELOPE_BOUNDARY_CLOSE);
|
|
451
451
|
}
|
|
452
|
+
var DECISION_REVERSIBILITY_TAGS = ["reversible", "irreversible"];
|
|
453
|
+
function decisionTagErrors(decisions) {
|
|
454
|
+
if (!Array.isArray(decisions)) {
|
|
455
|
+
return [];
|
|
456
|
+
}
|
|
457
|
+
const errors = [];
|
|
458
|
+
for (const line of decisions) {
|
|
459
|
+
if (typeof line !== "string") {
|
|
460
|
+
continue;
|
|
461
|
+
}
|
|
462
|
+
const m = /\[([^\]]*)\]\s*$/.exec(line.trimEnd());
|
|
463
|
+
if (m === null) {
|
|
464
|
+
continue;
|
|
465
|
+
}
|
|
466
|
+
const inner = (m[1] ?? "").trim();
|
|
467
|
+
const lowered = inner.toLowerCase();
|
|
468
|
+
if (DECISION_REVERSIBILITY_TAGS.includes(lowered)) {
|
|
469
|
+
if (inner !== lowered) {
|
|
470
|
+
errors.push(
|
|
471
|
+
`decisions: reversibility tag must be lower-case \u2014 got \`[${inner}]\`, expected \`[${lowered}]\``
|
|
472
|
+
);
|
|
473
|
+
}
|
|
474
|
+
continue;
|
|
475
|
+
}
|
|
476
|
+
if (/^i?rr?ever[a-z]*[^a-z]*$/i.test(lowered)) {
|
|
477
|
+
errors.push(
|
|
478
|
+
`decisions: \`[${inner}]\` is not a reversibility tag \u2014 use exactly ` + DECISION_REVERSIBILITY_TAGS.map((t) => `\`[${t}]\``).join(" or ") + ", or drop the bracket"
|
|
479
|
+
);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return errors;
|
|
483
|
+
}
|
|
452
484
|
var RECYCLE_ENVELOPE_KEYS = /* @__PURE__ */ new Set([
|
|
453
485
|
"capsule_version",
|
|
454
486
|
"variant",
|
|
@@ -461,6 +493,7 @@ var RECYCLE_ENVELOPE_KEYS = /* @__PURE__ */ new Set([
|
|
|
461
493
|
"not_carried_forward",
|
|
462
494
|
"decisions",
|
|
463
495
|
"constraints",
|
|
496
|
+
"do_not_touch",
|
|
464
497
|
"open_worker_envelopes",
|
|
465
498
|
"artifact_paths",
|
|
466
499
|
"assumptions",
|
|
@@ -513,7 +546,9 @@ function validateRecycleEnvelope(input) {
|
|
|
513
546
|
checkList(errors, "remaining", e["remaining"], MAX_LINE_CHARS, true);
|
|
514
547
|
checkList(errors, "not_carried_forward", e["not_carried_forward"], MAX_LINE_CHARS, true);
|
|
515
548
|
checkList(errors, "decisions", e["decisions"], MAX_LINE_CHARS, false);
|
|
549
|
+
errors.push(...decisionTagErrors(e["decisions"]));
|
|
516
550
|
checkList(errors, "constraints", e["constraints"], MAX_LINE_CHARS, false);
|
|
551
|
+
checkList(errors, "do_not_touch", e["do_not_touch"], MAX_REF_CHARS, false);
|
|
517
552
|
checkList(errors, "open_worker_envelopes", e["open_worker_envelopes"], MAX_REF_CHARS, false);
|
|
518
553
|
checkList(errors, "artifact_paths", e["artifact_paths"], MAX_REF_CHARS, false);
|
|
519
554
|
checkList(errors, "suggested_skills", e["suggested_skills"], MAX_REF_CHARS, false);
|
|
@@ -271,7 +271,7 @@ function* iter_corpus(roots = DEFAULT_SCAN_ROOTS, exts = [".md"]) {
|
|
|
271
271
|
function report(findings, opts) {
|
|
272
272
|
const check_label = opts.check_label;
|
|
273
273
|
if (findings.length === 0) {
|
|
274
|
-
process.stdout.write(`\u2705 ${check_label}: clean (${_corpus_note()}).
|
|
274
|
+
process.stdout.write(`\u2705 ${check_label}: clean (${_corpus_note(opts.scanned_roots)}).
|
|
275
275
|
`);
|
|
276
276
|
return 0;
|
|
277
277
|
}
|
|
@@ -311,8 +311,9 @@ function _pyG(n) {
|
|
|
311
311
|
}
|
|
312
312
|
return s;
|
|
313
313
|
}
|
|
314
|
-
function _corpus_note() {
|
|
315
|
-
|
|
314
|
+
function _corpus_note(scanned_roots) {
|
|
315
|
+
const roots = scanned_roots && scanned_roots.length > 0 ? scanned_roots : DEFAULT_SCAN_ROOTS;
|
|
316
|
+
return "scanned " + roots.join(", ");
|
|
316
317
|
}
|
|
317
318
|
var PyFloat = class {
|
|
318
319
|
constructor(value) {
|
|
@@ -4553,6 +4553,9 @@ var settingsSchema = external_exports.object({
|
|
|
4553
4553
|
),
|
|
4554
4554
|
language: external_exports.boolean().default(true).describe(
|
|
4555
4555
|
"Detector B of the turn-end gate: refuse a turn whose reply is not in the pinned language (19 measured occurrences). Fenced code, inline code, quoted tool output, tables, URLs and paths are stripped first, and the remainder is then scored LEAD-FIRST by the same classifier that sets the pin \u2014 so the verdict usually comes from the reply opening, not from all of it. Sharing that classifier is deliberate: it stops the pin and the detector disagreeing about a turn. Accepted opt-in spellings for the switches below include YAML true/false and yes/no/on/off. Inert while hooks.turn_end_gate.enabled is false."
|
|
4556
|
+
),
|
|
4557
|
+
verification: external_exports.boolean().default(true).describe(
|
|
4558
|
+
"Detector C of the turn-end gate: refuse a turn that changed a file and then ran nothing that could have checked it \u2014 no test, type-check, lint or build call follows the LAST edit. Ordering is the point: a run before the final edit did not exercise it, which is the freshness clause verify-before-complete states. Read off the turn tool calls, not the prose, because a reply cannot say whether an edit was verified. Deliberately narrow on what counts as verification \u2014 a missed detection costs one unguarded turn, a false refusal teaches you to switch the gate off. No fire rate is quoted: none has been measured yet. Inert while hooks.turn_end_gate.enabled is false."
|
|
4556
4559
|
)
|
|
4557
4560
|
}).default({})
|
|
4558
4561
|
}),
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
frontmatterPaths,
|
|
20
20
|
proseEqual,
|
|
21
21
|
splitFrontmatter
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-2TGMGLBL.js";
|
|
23
23
|
import "./chunk-FTAISGDQ.js";
|
|
24
24
|
import {
|
|
25
25
|
atomic_write_json,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
is_replay_mode
|
|
28
28
|
} from "./chunk-EJITJBJX.js";
|
|
29
29
|
import "./chunk-Q26HT4QT.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-55RI5UXK.js";
|
|
31
31
|
import "./chunk-PZWRPRWP.js";
|
|
32
32
|
import "./chunk-736JCWLM.js";
|
|
33
33
|
import {
|
|
@@ -66,11 +66,11 @@ import {
|
|
|
66
66
|
_wizard_state_path,
|
|
67
67
|
main,
|
|
68
68
|
shutilWhich
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-2TGMGLBL.js";
|
|
70
70
|
import "./chunk-FTAISGDQ.js";
|
|
71
71
|
import "./chunk-EJITJBJX.js";
|
|
72
72
|
import "./chunk-Q26HT4QT.js";
|
|
73
|
-
import "./chunk-
|
|
73
|
+
import "./chunk-55RI5UXK.js";
|
|
74
74
|
import "./chunk-PZWRPRWP.js";
|
|
75
75
|
import "./chunk-736JCWLM.js";
|
|
76
76
|
import "./chunk-63WSP6YZ.js";
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
KIRO_MARKER,
|
|
10
10
|
ROOCODE_MARKER,
|
|
11
11
|
ZED_MARKER
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-H6F2CQFI.js";
|
|
13
|
+
import "./chunk-ZAXH3ZWU.js";
|
|
14
14
|
import "./chunk-DS6BLDMG.js";
|
|
15
15
|
import "./chunk-BKO2AZ7Z.js";
|
|
16
16
|
import "./chunk-63WSP6YZ.js";
|
|
@@ -15,15 +15,15 @@ import {
|
|
|
15
15
|
scanEnvelopeDirectives,
|
|
16
16
|
validateRecycleEnvelope,
|
|
17
17
|
wrapAsPriorSessionData
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-I5EAFRII.js";
|
|
19
|
+
import "./chunk-UEZ7D35A.js";
|
|
20
20
|
import {
|
|
21
21
|
readHookStdin
|
|
22
22
|
} from "./chunk-MMJL4TIX.js";
|
|
23
23
|
import {
|
|
24
24
|
_RAW_KEY_PREFIXES,
|
|
25
25
|
hardenedSpawnEnv
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-55RI5UXK.js";
|
|
27
27
|
import "./chunk-PZWRPRWP.js";
|
|
28
28
|
import "./chunk-JEJABGKB.js";
|
|
29
29
|
import "./chunk-NDJLNC6Q.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-
|
|
5
|
+
} from "./chunk-UEZ7D35A.js";
|
|
6
6
|
import "./chunk-OY53J6II.js";
|
|
7
7
|
import "./chunk-J55WI3RR.js";
|
|
8
8
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
PROJECT_BRIDGE_MARKERS
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-H6F2CQFI.js";
|
|
5
|
+
import "./chunk-ZAXH3ZWU.js";
|
|
6
6
|
import "./chunk-DS6BLDMG.js";
|
|
7
7
|
import "./chunk-BKO2AZ7Z.js";
|
|
8
8
|
import {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
RECYCLE_ENVELOPE_REL,
|
|
6
6
|
collectGrounding,
|
|
7
7
|
validateRecycleEnvelope
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-I5EAFRII.js";
|
|
9
9
|
import {
|
|
10
10
|
atomic_write_json
|
|
11
11
|
} from "./chunk-EJITJBJX.js";
|
|
@@ -30,8 +30,13 @@ function templateEnvelope() {
|
|
|
30
30
|
acceptance_criteria: ["<what done means, one line each>"],
|
|
31
31
|
remaining: ["<open work, one line each>"],
|
|
32
32
|
not_carried_forward: ["<what the successor must re-derive from source>"],
|
|
33
|
-
decisions: ["<decision \u2014 one-line rationale>"],
|
|
33
|
+
decisions: ["<decision \u2014 one-line rationale> [reversible]"],
|
|
34
34
|
constraints: ["<binding constraint>"],
|
|
35
|
+
// Ships EMPTY, unlike the prose lists above: the entries are path refs,
|
|
36
|
+
// and a `<placeholder>` left in by a hurried writer would be a fake path
|
|
37
|
+
// rather than obvious filler. An empty list is also the honest default —
|
|
38
|
+
// nothing off limits is the common case.
|
|
39
|
+
do_not_touch: [],
|
|
35
40
|
open_worker_envelopes: [],
|
|
36
41
|
artifact_paths: ["<path to a deliverable / note / evidence file>"],
|
|
37
42
|
assumptions: [],
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
GLOBAL_AGENT_SETTINGS_PATH,
|
|
4
4
|
GLOBAL_USER_SETTINGS_PATH,
|
|
5
5
|
SETTINGS_FILE
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-H6F2CQFI.js";
|
|
7
|
+
import "./chunk-ZAXH3ZWU.js";
|
|
8
8
|
import "./chunk-DS6BLDMG.js";
|
|
9
9
|
import "./chunk-BKO2AZ7Z.js";
|
|
10
10
|
import "./chunk-63WSP6YZ.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
main
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-H6F2CQFI.js";
|
|
5
|
+
import "./chunk-ZAXH3ZWU.js";
|
|
6
6
|
import "./chunk-DS6BLDMG.js";
|
|
7
7
|
import "./chunk-BKO2AZ7Z.js";
|
|
8
8
|
import {
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
PROJECT_BRIDGE_MARKERS,
|
|
4
4
|
USER_SCOPE_PATHS,
|
|
5
5
|
subtract_pointers
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-H6F2CQFI.js";
|
|
7
|
+
import "./chunk-ZAXH3ZWU.js";
|
|
8
8
|
import "./chunk-DS6BLDMG.js";
|
|
9
9
|
import "./chunk-BKO2AZ7Z.js";
|
|
10
10
|
import {
|
|
@@ -3,8 +3,8 @@ import { createRequire as __acCreateRequire } from 'node:module'; const require
|
|
|
3
3
|
import {
|
|
4
4
|
PROJECT_BRIDGE_MARKERS,
|
|
5
5
|
USER_SCOPE_PATHS
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-H6F2CQFI.js";
|
|
7
|
+
import "./chunk-ZAXH3ZWU.js";
|
|
8
8
|
import "./chunk-DS6BLDMG.js";
|
|
9
9
|
import "./chunk-BKO2AZ7Z.js";
|
|
10
10
|
import {
|
|
@@ -2573,7 +2573,7 @@
|
|
|
2573
2573
|
},
|
|
2574
2574
|
{
|
|
2575
2575
|
"category": "command",
|
|
2576
|
-
"checksum": "sha256:
|
|
2576
|
+
"checksum": "sha256:0181143b6ba9ee8ed18fc3069d175e1702a5a8b36bf9694fa4a07f7c98f52ca5",
|
|
2577
2577
|
"install": {
|
|
2578
2578
|
"default": true,
|
|
2579
2579
|
"removable": false
|
|
@@ -5074,7 +5074,7 @@
|
|
|
5074
5074
|
},
|
|
5075
5075
|
{
|
|
5076
5076
|
"category": "command",
|
|
5077
|
-
"checksum": "sha256:
|
|
5077
|
+
"checksum": "sha256:7b6df8d87fc17588e344606cd47d081c8058a32f8ff9a2ecc0ce6d918a05d756",
|
|
5078
5078
|
"install": {
|
|
5079
5079
|
"default": true,
|
|
5080
5080
|
"removable": false
|
|
@@ -9271,7 +9271,7 @@
|
|
|
9271
9271
|
},
|
|
9272
9272
|
{
|
|
9273
9273
|
"category": "skill",
|
|
9274
|
-
"checksum": "sha256:
|
|
9274
|
+
"checksum": "sha256:f7a67c0b8382e292ed0e98d36e683644c66b8291f404f75d321a89aed7574ae3",
|
|
9275
9275
|
"install": {
|
|
9276
9276
|
"default": true,
|
|
9277
9277
|
"removable": true
|
|
@@ -9645,7 +9645,7 @@
|
|
|
9645
9645
|
},
|
|
9646
9646
|
{
|
|
9647
9647
|
"category": "skill",
|
|
9648
|
-
"checksum": "sha256:
|
|
9648
|
+
"checksum": "sha256:7d2f4b3b162943305cf64778e2e63b67331f7861bf0e2eec392293e9579445d8",
|
|
9649
9649
|
"install": {
|
|
9650
9650
|
"default": true,
|
|
9651
9651
|
"removable": true
|
|
@@ -12775,7 +12775,7 @@
|
|
|
12775
12775
|
},
|
|
12776
12776
|
{
|
|
12777
12777
|
"category": "skill",
|
|
12778
|
-
"checksum": "sha256:
|
|
12778
|
+
"checksum": "sha256:d547a77483a8022c0a61d7efcb254e287e966ff4bf942e0155ca41824859a130",
|
|
12779
12779
|
"install": {
|
|
12780
12780
|
"default": false,
|
|
12781
12781
|
"removable": true
|
|
@@ -13237,7 +13237,7 @@
|
|
|
13237
13237
|
},
|
|
13238
13238
|
{
|
|
13239
13239
|
"category": "skill",
|
|
13240
|
-
"checksum": "sha256:
|
|
13240
|
+
"checksum": "sha256:e0d38b712e69fa5f9bb8fe0ec9d8ba1020c2a45e0502e32a915259091e612a82",
|
|
13241
13241
|
"install": {
|
|
13242
13242
|
"default": true,
|
|
13243
13243
|
"removable": false
|
|
@@ -13589,7 +13589,7 @@
|
|
|
13589
13589
|
},
|
|
13590
13590
|
{
|
|
13591
13591
|
"category": "skill",
|
|
13592
|
-
"checksum": "sha256:
|
|
13592
|
+
"checksum": "sha256:1a3c1965abf5ebfbeac3b17142c0bc84a955156ea8fa2928c048aeb540ce8ff1",
|
|
13593
13593
|
"install": {
|
|
13594
13594
|
"default": true,
|
|
13595
13595
|
"removable": false
|
|
@@ -13809,7 +13809,7 @@
|
|
|
13809
13809
|
},
|
|
13810
13810
|
{
|
|
13811
13811
|
"category": "skill",
|
|
13812
|
-
"checksum": "sha256:
|
|
13812
|
+
"checksum": "sha256:1d7259677165ad794e4f16d652830d937ce21f56dbfc0aa440869163f3259792",
|
|
13813
13813
|
"install": {
|
|
13814
13814
|
"default": true,
|
|
13815
13815
|
"removable": false
|
|
@@ -13831,7 +13831,7 @@
|
|
|
13831
13831
|
},
|
|
13832
13832
|
{
|
|
13833
13833
|
"category": "skill",
|
|
13834
|
-
"checksum": "sha256:
|
|
13834
|
+
"checksum": "sha256:89e099d1d527ed2000dd3bbe43dddac623487b6f75b08f4fb0a6b9c3ec39dfb8",
|
|
13835
13835
|
"install": {
|
|
13836
13836
|
"default": true,
|
|
13837
13837
|
"removable": false
|
|
@@ -14007,7 +14007,7 @@
|
|
|
14007
14007
|
},
|
|
14008
14008
|
{
|
|
14009
14009
|
"category": "skill",
|
|
14010
|
-
"checksum": "sha256:
|
|
14010
|
+
"checksum": "sha256:73d3092545218a3814d37acef1f07f0e555eeae28916d222cc17a8c286db5b11",
|
|
14011
14011
|
"install": {
|
|
14012
14012
|
"default": true,
|
|
14013
14013
|
"removable": false
|
|
@@ -14486,7 +14486,7 @@
|
|
|
14486
14486
|
"workspaces": []
|
|
14487
14487
|
}
|
|
14488
14488
|
],
|
|
14489
|
-
"checksum": "sha256:
|
|
14489
|
+
"checksum": "sha256:159444bbd668e7d4b686aca94807c2d7ad5d8c64353bf1fd6e823aafce085ef2",
|
|
14490
14490
|
"deprecations": [
|
|
14491
14491
|
{
|
|
14492
14492
|
"key": "tier",
|
|
@@ -14629,7 +14629,7 @@
|
|
|
14629
14629
|
"reason": "scaffold template for ticket-bundle tickets (ADR-101); carries no runtime frontmatter — emit-tickets fills it in per ticket"
|
|
14630
14630
|
}
|
|
14631
14631
|
],
|
|
14632
|
-
"generated_at": "2026-08-
|
|
14632
|
+
"generated_at": "2026-08-12T02:34:16Z",
|
|
14633
14633
|
"packs": [
|
|
14634
14634
|
{
|
|
14635
14635
|
"artefact_count": 118,
|
|
@@ -15482,7 +15482,7 @@
|
|
|
15482
15482
|
]
|
|
15483
15483
|
}
|
|
15484
15484
|
],
|
|
15485
|
-
"scanner_version": "
|
|
15485
|
+
"scanner_version": "1eaf68b6e9c9",
|
|
15486
15486
|
"stats": {
|
|
15487
15487
|
"by_category": {
|
|
15488
15488
|
"command": 196,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
7963b6e4307019790a7885f66bc48862b8965626d54a905bb3e6f81c35ab8690 discovery-manifest.json
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Discovery — Dormancy Report
|
|
2
|
+
|
|
3
|
+
- Generated: `2026-08-12T02:34:16Z`
|
|
4
|
+
- Window: **6 months** without a commit
|
|
5
|
+
|
|
6
|
+
> Dormancy triggers **review, never auto-deprecation**
|
|
7
|
+
> (`docs/governance.md` § Skill lifecycle policy). A finished artefact and an
|
|
8
|
+
> abandoned one look identical from commit dates, so this is a prompt to ask
|
|
9
|
+
> "still earning its slot?" — never a removal list, and never a gate.
|
|
10
|
+
|
|
11
|
+
## Signal unavailable
|
|
12
|
+
|
|
13
|
+
**No dormancy list is published**: shallow clone — a truncated history is indistinguishable from a dormant artefact. Re-run after `git fetch --unshallow`.
|
|
14
|
+
|
|
15
|
+
An empty section here would read as "nothing is dormant", which is a
|
|
16
|
+
different claim from "the signal could not be computed".
|
|
17
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"checksum": "sha256:
|
|
3
|
-
"generated_at": "2026-08-
|
|
2
|
+
"checksum": "sha256:159444bbd668e7d4b686aca94807c2d7ad5d8c64353bf1fd6e823aafce085ef2",
|
|
3
|
+
"generated_at": "2026-08-12T02:34:16Z",
|
|
4
4
|
"packs": [
|
|
5
5
|
{
|
|
6
6
|
"always_on": false,
|
|
@@ -1814,5 +1814,5 @@
|
|
|
1814
1814
|
]
|
|
1815
1815
|
}
|
|
1816
1816
|
],
|
|
1817
|
-
"scanner_version": "
|
|
1817
|
+
"scanner_version": "1eaf68b6e9c9"
|
|
1818
1818
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"checksum": "sha256:
|
|
3
|
-
"generated_at": "2026-08-
|
|
4
|
-
"scanner_version": "
|
|
2
|
+
"checksum": "sha256:159444bbd668e7d4b686aca94807c2d7ad5d8c64353bf1fd6e823aafce085ef2",
|
|
3
|
+
"generated_at": "2026-08-12T02:34:16Z",
|
|
4
|
+
"scanner_version": "1eaf68b6e9c9",
|
|
5
5
|
"workspaces": [
|
|
6
6
|
{
|
|
7
7
|
"artefact_count": 202,
|