@eir-labs/coltrane 0.4.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/LICENSE +201 -0
- package/README.md +85 -0
- package/agents/anticipation-mapper.json +34 -0
- package/agents/claim-amender.json +34 -0
- package/agents/claim-architect.json +34 -0
- package/agents/claim-rewriter.json +32 -0
- package/agents/delivery-finalizer.json +40 -0
- package/agents/diamond-cutter.json +33 -0
- package/agents/disclosure-analyst.json +26 -0
- package/agents/domain-explorer.json +37 -0
- package/agents/e2e-runner.json +34 -0
- package/agents/e2e-suite-judge.json +26 -0
- package/agents/event-clusterer.json +29 -0
- package/agents/novelty-searcher.json +40 -0
- package/agents/patent-browser-scout.json +49 -0
- package/agents/patent-examiner.json +36 -0
- package/agents/phase_agents/claim-rewriter.md +44 -0
- package/agents/phase_agents/delivery-finalizer.md +30 -0
- package/agents/phase_agents/diamond-cutter.md +47 -0
- package/agents/phase_agents/domain-explorer.md +27 -0
- package/agents/phase_agents/novelty-searcher.md +50 -0
- package/agents/phase_agents/problem-definer.md +32 -0
- package/agents/phase_agents/solution-developer.md +26 -0
- package/agents/phase_agents/verdict-judger.md +70 -0
- package/agents/players/audience-modeler.md +40 -0
- package/agents/players/chain-audit-keeper.md +41 -0
- package/agents/players/illumination-reviewer.md +42 -0
- package/agents/players/methodology-cadence-keeper.md +42 -0
- package/agents/players/substrate-edge-keeper.md +45 -0
- package/agents/prior-art-scout.json +45 -0
- package/agents/problem-definer.json +35 -0
- package/agents/seeds/steve_seed_a.json +12 -0
- package/agents/seeds/steve_seed_b.json +12 -0
- package/agents/seeds/steve_seed_c.json +12 -0
- package/agents/seeds/steve_seed_d.json +12 -0
- package/agents/sensor.json +22 -0
- package/agents/solution-developer.json +35 -0
- package/agents/source-walker.json +38 -0
- package/agents/spec-drafter.json +31 -0
- package/agents/sub_thread_soft_judge.json +26 -0
- package/agents/sub_thread_trace_sensor.json +22 -0
- package/agents/summarizer.json +25 -0
- package/agents/synthesis-writer.json +29 -0
- package/agents/triage-judge.json +39 -0
- package/agents/user_flow_judge.json +26 -0
- package/agents/user_flow_sensor.json +22 -0
- package/agents/verdict-judger.json +39 -0
- package/core_types/artifact.json +17 -0
- package/core_types/interpretation.json +16 -0
- package/core_types/judgment.json +16 -0
- package/core_types/plan.json +16 -0
- package/core_types/signal.json +16 -0
- package/core_types/verdict.json +27 -0
- package/dist/src/access_grant.d.ts +46 -0
- package/dist/src/access_grant.js +76 -0
- package/dist/src/access_grant.js.map +1 -0
- package/dist/src/acoustics.d.ts +9 -0
- package/dist/src/acoustics.js +65 -0
- package/dist/src/acoustics.js.map +1 -0
- package/dist/src/agent_profile.d.ts +36 -0
- package/dist/src/agent_profile.js +57 -0
- package/dist/src/agent_profile.js.map +1 -0
- package/dist/src/bifrost_invoker.d.ts +33 -0
- package/dist/src/bifrost_invoker.js +85 -0
- package/dist/src/bifrost_invoker.js.map +1 -0
- package/dist/src/canonical_core_types.d.ts +2 -0
- package/dist/src/canonical_core_types.js +111 -0
- package/dist/src/canonical_core_types.js.map +1 -0
- package/dist/src/canonical_form.d.ts +55 -0
- package/dist/src/canonical_form.js +93 -0
- package/dist/src/canonical_form.js.map +1 -0
- package/dist/src/charter.d.ts +37 -0
- package/dist/src/charter.js +86 -0
- package/dist/src/charter.js.map +1 -0
- package/dist/src/circle_of_fifths.d.ts +27 -0
- package/dist/src/circle_of_fifths.js +78 -0
- package/dist/src/circle_of_fifths.js.map +1 -0
- package/dist/src/claude_invoker.d.ts +102 -0
- package/dist/src/claude_invoker.js +760 -0
- package/dist/src/claude_invoker.js.map +1 -0
- package/dist/src/coltrane_profile.d.ts +87 -0
- package/dist/src/coltrane_profile.js +132 -0
- package/dist/src/coltrane_profile.js.map +1 -0
- package/dist/src/composition.d.ts +57 -0
- package/dist/src/composition.js +447 -0
- package/dist/src/composition.js.map +1 -0
- package/dist/src/core_types.d.ts +6 -0
- package/dist/src/core_types.js +25 -0
- package/dist/src/core_types.js.map +1 -0
- package/dist/src/document_factory.d.ts +89 -0
- package/dist/src/document_factory.js +176 -0
- package/dist/src/document_factory.js.map +1 -0
- package/dist/src/genome_schema.d.ts +512 -0
- package/dist/src/genome_schema.js +168 -0
- package/dist/src/genome_schema.js.map +1 -0
- package/dist/src/genome_writer.d.ts +67 -0
- package/dist/src/genome_writer.js +179 -0
- package/dist/src/genome_writer.js.map +1 -0
- package/dist/src/gig_song.d.ts +29 -0
- package/dist/src/gig_song.js +56 -0
- package/dist/src/gig_song.js.map +1 -0
- package/dist/src/gig_tracker.d.ts +54 -0
- package/dist/src/gig_tracker.js +109 -0
- package/dist/src/gig_tracker.js.map +1 -0
- package/dist/src/harmonic_validation.d.ts +11 -0
- package/dist/src/harmonic_validation.js +35 -0
- package/dist/src/harmonic_validation.js.map +1 -0
- package/dist/src/hooks.d.ts +27 -0
- package/dist/src/hooks.js +2 -0
- package/dist/src/hooks.js.map +1 -0
- package/dist/src/index.d.ts +36 -0
- package/dist/src/index.js +37 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/jsong.d.ts +47 -0
- package/dist/src/jsong.js +130 -0
- package/dist/src/jsong.js.map +1 -0
- package/dist/src/judges/user_flow_judge.d.ts +89 -0
- package/dist/src/judges/user_flow_judge.js +200 -0
- package/dist/src/judges/user_flow_judge.js.map +1 -0
- package/dist/src/learner.d.ts +37 -0
- package/dist/src/learner.js +30 -0
- package/dist/src/learner.js.map +1 -0
- package/dist/src/ledger.d.ts +225 -0
- package/dist/src/ledger.js +306 -0
- package/dist/src/ledger.js.map +1 -0
- package/dist/src/loader.d.ts +87 -0
- package/dist/src/loader.js +504 -0
- package/dist/src/loader.js.map +1 -0
- package/dist/src/mcp.d.ts +23 -0
- package/dist/src/mcp.js +125 -0
- package/dist/src/mcp.js.map +1 -0
- package/dist/src/modulation_path.d.ts +42 -0
- package/dist/src/modulation_path.js +60 -0
- package/dist/src/modulation_path.js.map +1 -0
- package/dist/src/output_validation.d.ts +19 -0
- package/dist/src/output_validation.js +51 -0
- package/dist/src/output_validation.js.map +1 -0
- package/dist/src/outputs.d.ts +125 -0
- package/dist/src/outputs.js +452 -0
- package/dist/src/outputs.js.map +1 -0
- package/dist/src/overtones.d.ts +42 -0
- package/dist/src/overtones.js +98 -0
- package/dist/src/overtones.js.map +1 -0
- package/dist/src/player_to_claude_code.d.ts +17 -0
- package/dist/src/player_to_claude_code.js +141 -0
- package/dist/src/player_to_claude_code.js.map +1 -0
- package/dist/src/playwright_cage.d.ts +28 -0
- package/dist/src/playwright_cage.js +47 -0
- package/dist/src/playwright_cage.js.map +1 -0
- package/dist/src/polyphony.d.ts +46 -0
- package/dist/src/polyphony.js +91 -0
- package/dist/src/polyphony.js.map +1 -0
- package/dist/src/portfolio.d.ts +52 -0
- package/dist/src/portfolio.js +186 -0
- package/dist/src/portfolio.js.map +1 -0
- package/dist/src/pricing.d.ts +23 -0
- package/dist/src/pricing.js +16 -0
- package/dist/src/pricing.js.map +1 -0
- package/dist/src/registry.d.ts +46 -0
- package/dist/src/registry.js +199 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/runtime.d.ts +304 -0
- package/dist/src/runtime.js +1099 -0
- package/dist/src/runtime.js.map +1 -0
- package/dist/src/server.d.ts +88 -0
- package/dist/src/server.js +1692 -0
- package/dist/src/server.js.map +1 -0
- package/dist/src/server_entry.d.ts +2 -0
- package/dist/src/server_entry.js +40 -0
- package/dist/src/server_entry.js.map +1 -0
- package/dist/src/server_relay.d.ts +82 -0
- package/dist/src/server_relay.js +341 -0
- package/dist/src/server_relay.js.map +1 -0
- package/dist/src/simulate.d.ts +60 -0
- package/dist/src/simulate.js +72 -0
- package/dist/src/simulate.js.map +1 -0
- package/dist/src/skill_runner.mjs +34 -0
- package/dist/src/skill_subprocess.d.ts +65 -0
- package/dist/src/skill_subprocess.js +132 -0
- package/dist/src/skill_subprocess.js.map +1 -0
- package/dist/src/skills.d.ts +85 -0
- package/dist/src/skills.js +258 -0
- package/dist/src/skills.js.map +1 -0
- package/dist/src/subthread_recorder.d.ts +68 -0
- package/dist/src/subthread_recorder.js +166 -0
- package/dist/src/subthread_recorder.js.map +1 -0
- package/dist/src/tensor_read.d.ts +38 -0
- package/dist/src/tensor_read.js +60 -0
- package/dist/src/tensor_read.js.map +1 -0
- package/dist/src/test_honest_broker.d.ts +34 -0
- package/dist/src/test_honest_broker.js +155 -0
- package/dist/src/test_honest_broker.js.map +1 -0
- package/dist/src/test_topology.d.ts +22 -0
- package/dist/src/test_topology.js +137 -0
- package/dist/src/test_topology.js.map +1 -0
- package/dist/src/tones.d.ts +20 -0
- package/dist/src/tones.js +81 -0
- package/dist/src/tones.js.map +1 -0
- package/dist/src/tool_providers.d.ts +45 -0
- package/dist/src/tool_providers.js +104 -0
- package/dist/src/tool_providers.js.map +1 -0
- package/dist/src/type_versioning.d.ts +23 -0
- package/dist/src/type_versioning.js +31 -0
- package/dist/src/type_versioning.js.map +1 -0
- package/dist/src/version.d.ts +28 -0
- package/dist/src/version.js +86 -0
- package/dist/src/version.js.map +1 -0
- package/domain_types/claim-draft.json +34 -0
- package/domain_types/coverage-report.json +31 -0
- package/domain_types/draft-agent-profile.json +31 -0
- package/domain_types/draft-domain-type.json +28 -0
- package/domain_types/draft-standard.json +46 -0
- package/domain_types/e2e-observation.json +32 -0
- package/domain_types/e2e-report.json +30 -0
- package/domain_types/e2e-target.json +26 -0
- package/domain_types/e2e-verdict.json +26 -0
- package/domain_types/examine-round-record.json +40 -0
- package/domain_types/examiner-rejection.json +28 -0
- package/domain_types/failure-modes.json +31 -0
- package/domain_types/invention-analysis.json +34 -0
- package/domain_types/invention-spec.json +34 -0
- package/domain_types/novelty-analysis.json +28 -0
- package/domain_types/novelty-verdict.json +35 -0
- package/domain_types/parsed-conversation-trace.json +38 -0
- package/domain_types/pattern-extraction.json +62 -0
- package/domain_types/prior-art-hit.json +50 -0
- package/domain_types/project-charter.json +71 -0
- package/domain_types/provisional-draft.json +34 -0
- package/domain_types/raw-note.json +19 -0
- package/domain_types/repo-survey.json +28 -0
- package/domain_types/seeding-verdict.json +70 -0
- package/domain_types/soft-verdict.json +55 -0
- package/domain_types/summary.json +19 -0
- package/domain_types/triage-verdict.json +59 -0
- package/domain_types/user-flow-transcript.json +43 -0
- package/domain_types/user-flow-verdict.json +60 -0
- package/domain_types/verdict-record.json +39 -0
- package/package.json +82 -0
- package/skills/citation-verify/fixtures/basic.json +14 -0
- package/skills/citation-verify/meta.json +10 -0
- package/skills/citation-verify/skill.mjs +26 -0
- package/skills/claim-element-decompose/fixtures/basic.json +11 -0
- package/skills/claim-element-decompose/meta.json +10 -0
- package/skills/claim-element-decompose/skill.mjs +14 -0
- package/skills/diamond-cutting-discipline/fixtures/basic.json +13 -0
- package/skills/diamond-cutting-discipline/meta.json +19 -0
- package/skills/diamond-cutting-discipline/skill.md +46 -0
- package/skills/element-mapping-matrix/fixtures/basic.json +13 -0
- package/skills/element-mapping-matrix/meta.json +10 -0
- package/skills/element-mapping-matrix/skill.mjs +20 -0
- package/skills/number-adder/fixtures/basic.json +9 -0
- package/skills/number-adder/meta.json +10 -0
- package/skills/number-adder/skill.mjs +12 -0
- package/skills/patent-fetch/fixtures/parse.json +18 -0
- package/skills/patent-fetch/meta.json +11 -0
- package/skills/patent-fetch/skill.mjs +34 -0
- package/skills/query-expand/fixtures/basic.json +14 -0
- package/skills/query-expand/meta.json +10 -0
- package/skills/query-expand/skill.mjs +29 -0
- package/skills/run-vitest-band/fixtures/basic.json +9 -0
- package/skills/run-vitest-band/meta.json +18 -0
- package/skills/run-vitest-band/skill.mjs +22 -0
- package/skills/statutory-checklist/fixtures/basic.json +16 -0
- package/skills/statutory-checklist/meta.json +10 -0
- package/skills/statutory-checklist/skill.mjs +25 -0
- package/skills/summarize-tight/fixtures/basic.json +13 -0
- package/skills/summarize-tight/meta.json +20 -0
- package/skills/summarize-tight/skill.md +1 -0
- package/skills/verdict-gate/fixtures/basic.json +9 -0
- package/skills/verdict-gate/meta.json +10 -0
- package/skills/verdict-gate/skill.mjs +82 -0
- package/standards/e2e-suite-v0.json +44 -0
- package/standards/patent-triage-v0.json +98 -0
- package/standards/patent-triage-v1.json +84 -0
- package/standards/seed-from-local-repos-v0.json +115 -0
- package/standards/sub_thread_invocation.json +50 -0
- package/standards/summarize.json +40 -0
- package/standards/synthesis-walk-v0.json +108 -0
- package/standards/user_flow_correctness.json +57 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "statutory-checklist",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"skill_type": "verification",
|
|
5
|
+
"input_type": "statute-assessments",
|
|
6
|
+
"output_type": "statutory-checklist",
|
|
7
|
+
"determinism_ratio": 1.0,
|
|
8
|
+
"permission": { "tier": 0 },
|
|
9
|
+
"description": "Scaffold the patentability statutory checklist (§101 eligibility, §102 anticipation, §103 obviousness, §112 enablement+definiteness): every statute always present with its question; the examiner fills each verdict. all_cleared is derived (true iff every statute is marked cleared). Deterministic structure — the rubric the adversary cannot skip a statute on."
|
|
10
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// statutory-checklist — the §101/§102/§103/§112 rubric the examiner must complete in full.
|
|
2
|
+
// Pure/deterministic. Every statute is always present with its question; the examiner supplies
|
|
3
|
+
// per-statute { cleared, rejection } in input.assessments keyed by statute. all_cleared is
|
|
4
|
+
// derived (true iff every statute is explicitly cleared) — an unaddressed statute is NOT cleared,
|
|
5
|
+
// so the adversary cannot pass a claim by silence.
|
|
6
|
+
const STATUTES = [
|
|
7
|
+
{ statute: "§101", question: "Is the claim directed to patent-eligible subject matter (not an abstract idea / law of nature without an inventive concept)?" },
|
|
8
|
+
{ statute: "§102", question: "Is the claim anticipated — does a single prior-art reference disclose every element?" },
|
|
9
|
+
{ statute: "§103", question: "Is the claim obvious over a combination of references to a person of ordinary skill?" },
|
|
10
|
+
{ statute: "§112", question: "Is the claim enabled and definite — could a skilled person build it, and is each term bounded?" },
|
|
11
|
+
];
|
|
12
|
+
export default function run(input) {
|
|
13
|
+
const a = (input && typeof input.assessments === "object" && input.assessments) || {};
|
|
14
|
+
const checklist = STATUTES.map((s) => {
|
|
15
|
+
const got = a[s.statute] || {};
|
|
16
|
+
return {
|
|
17
|
+
statute: s.statute,
|
|
18
|
+
question: s.question,
|
|
19
|
+
cleared: got.cleared === true,
|
|
20
|
+
rejection: typeof got.rejection === "string" ? got.rejection : null,
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
const all_cleared = checklist.every((c) => c.cleared);
|
|
24
|
+
return { checklist, all_cleared, statutes_checked: STATUTES.map((s) => s.statute) };
|
|
25
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "basic",
|
|
3
|
+
"description": "contract: produces the typed output. Runs once the reasoning half is resolved in eval mode — see skills open questions.",
|
|
4
|
+
"input": {
|
|
5
|
+
"text": "the new index halves p99 latency; it shipped tuesday"
|
|
6
|
+
},
|
|
7
|
+
"assertions": [
|
|
8
|
+
{
|
|
9
|
+
"path": "summary",
|
|
10
|
+
"op": "is_string"
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "summarize-tight",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"skill_type": "analysis",
|
|
5
|
+
"permission": {
|
|
6
|
+
"tier": 0
|
|
7
|
+
},
|
|
8
|
+
"domain": "demo",
|
|
9
|
+
"output_schema": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"properties": {
|
|
12
|
+
"summary": {
|
|
13
|
+
"type": "string"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"required": [
|
|
17
|
+
"summary"
|
|
18
|
+
]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Compose the gist in one tight clause. Use only the supplied facts; no filler.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "fileable-with-coverage-and-survival",
|
|
3
|
+
"description": "FILEABLE with a patent corpus searched and a survived round passes through",
|
|
4
|
+
"input": { "recommended": "FILEABLE", "corpora_searched": ["USPTO PatentsView", "literature"], "survival_count": 1 },
|
|
5
|
+
"assertions": [
|
|
6
|
+
{ "path": "recommended", "op": "equals", "value": "FILEABLE" },
|
|
7
|
+
{ "path": "gated", "op": "equals", "value": false }
|
|
8
|
+
]
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "verdict-gate",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"skill_type": "verification",
|
|
5
|
+
"input_type": "triage-verdict",
|
|
6
|
+
"output_type": "triage-verdict",
|
|
7
|
+
"determinism_ratio": 1.0,
|
|
8
|
+
"permission": { "tier": 0 },
|
|
9
|
+
"description": "The hard guard that sits as its own chair between the judge's candidate verdict and the sealed triage-verdict: a FILEABLE candidate lacking patent-corpus coverage OR a survived examine round is deterministically downgraded to INSUFFICIENT-EVIDENCE, with the gate reasons recorded. Runtime enforcement, not prompt guidance — the wrong verdict cannot be sealed."
|
|
10
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// verdict-gate — the hard guard on the triage verdict. Pure/deterministic.
|
|
2
|
+
//
|
|
3
|
+
// Runs as a skill-backed CHAIR (not bound prompt guidance): the gate is the seat between the
|
|
4
|
+
// judge's candidate verdict and the final triage-verdict, so a FILEABLE the evidence doesn't
|
|
5
|
+
// support can never be sealed downstream:
|
|
6
|
+
// - coverage gate: FILEABLE requires a patent corpus to have actually been searched
|
|
7
|
+
// (>=1 patent corpus named in corpora_searched). Searched-and-found-nothing still counts;
|
|
8
|
+
// never-searched does not.
|
|
9
|
+
// - survival gate: FILEABLE requires survival_count >= 1 (the claim cleared an examine round).
|
|
10
|
+
// A FILEABLE failing either is downgraded to INSUFFICIENT-EVIDENCE with the reason recorded.
|
|
11
|
+
// Non-FILEABLE candidates pass through unchanged.
|
|
12
|
+
//
|
|
13
|
+
// As a chair, its input is the MERGE of its depends_on roles (the judge's candidate verdict +
|
|
14
|
+
// the search coverage-report + the latest examine-round-record), so it reads:
|
|
15
|
+
// recommended ← the candidate verdict
|
|
16
|
+
// corpora_searched ← the coverage-report (entries may be strings OR {corpus,status} objects)
|
|
17
|
+
// survival_count ← explicit, else derived from the examine-round-record's `survived` boolean
|
|
18
|
+
// It seals a triage-verdict: a deterministic recommended + rationale, plus the gate provenance.
|
|
19
|
+
const PATENT_CORPUS = /patent|patentsview|uspto|espacenet|lens/i;
|
|
20
|
+
|
|
21
|
+
// A coverage-report corpus entry is either a bare string or an object {corpus|name, status}.
|
|
22
|
+
function corpusName(c) {
|
|
23
|
+
if (typeof c === "string") return c;
|
|
24
|
+
if (c && typeof c === "object") return String(c.corpus ?? c.name ?? "");
|
|
25
|
+
return "";
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export default function run(input) {
|
|
29
|
+
const recommended = String((input && input.recommended) || "");
|
|
30
|
+
const corpora = Array.isArray(input && input.corpora_searched) ? input.corpora_searched : [];
|
|
31
|
+
// survival_count is preferred when supplied; otherwise derive it from the examine-round-record's
|
|
32
|
+
// `survived` boolean (survived → the claim cleared >=1 round). Absent both → 0 (never survived).
|
|
33
|
+
let survival = Number(input && input.survival_count);
|
|
34
|
+
if (!Number.isFinite(survival) || (input && input.survival_count == null)) {
|
|
35
|
+
survival = input && input.survived === true ? 1 : 0;
|
|
36
|
+
}
|
|
37
|
+
const hasPatentCoverage = corpora.some((c) => PATENT_CORPUS.test(corpusName(c)));
|
|
38
|
+
|
|
39
|
+
const gate_reasons = [];
|
|
40
|
+
let finalRec = recommended;
|
|
41
|
+
if (recommended === "FILEABLE") {
|
|
42
|
+
if (!hasPatentCoverage) {
|
|
43
|
+
finalRec = "INSUFFICIENT-EVIDENCE";
|
|
44
|
+
gate_reasons.push("coverage gate: no patent corpus was searched — novelty cannot be asserted");
|
|
45
|
+
} else if (survival < 1) {
|
|
46
|
+
finalRec = "INSUFFICIENT-EVIDENCE";
|
|
47
|
+
gate_reasons.push("survival gate: the claim did not survive an examine round");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const gated = finalRec !== recommended;
|
|
51
|
+
// Deterministic rationale — the gate does NOT borrow the candidate's prose (the merged blob
|
|
52
|
+
// can carry other roles' `rationale`); it states the gate outcome plainly. The judge's full
|
|
53
|
+
// reasoning lives in the separately-sealed verdict-record.
|
|
54
|
+
const rationale = gated
|
|
55
|
+
? `Gated to ${finalRec} from ${recommended}: ${gate_reasons.join("; ")}.`
|
|
56
|
+
: `${finalRec} upheld — patent coverage: ${hasPatentCoverage}; survived rounds: ${survival}.`;
|
|
57
|
+
return {
|
|
58
|
+
recommended: finalRec,
|
|
59
|
+
rationale,
|
|
60
|
+
original_recommended: recommended,
|
|
61
|
+
gated,
|
|
62
|
+
gate_reasons,
|
|
63
|
+
has_patent_coverage: hasPatentCoverage,
|
|
64
|
+
survival_count: survival,
|
|
65
|
+
// The evidence this verification rests on, as the Verdict core requires (#227/#228).
|
|
66
|
+
// Not decoration: these are the two gates above, restated as the auditable record of
|
|
67
|
+
// what was actually checked. The gate already computed both — it simply never wrote
|
|
68
|
+
// them down, so a sealed triage-verdict named its conclusion but not its grounds.
|
|
69
|
+
checks: [
|
|
70
|
+
{
|
|
71
|
+
method: "coverage-gate",
|
|
72
|
+
target_ref: "coverage-report.corpora_searched",
|
|
73
|
+
result: hasPatentCoverage ? "pass" : "fail",
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
method: "survival-gate",
|
|
77
|
+
target_ref: "examine-round-record.survived",
|
|
78
|
+
result: survival >= 1 ? "pass" : "fail",
|
|
79
|
+
},
|
|
80
|
+
],
|
|
81
|
+
};
|
|
82
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "e2e-suite-v0",
|
|
3
|
+
"domain": "e2e",
|
|
4
|
+
"agent_slugs": [
|
|
5
|
+
"e2e-runner",
|
|
6
|
+
"e2e-suite-judge"
|
|
7
|
+
],
|
|
8
|
+
"phases": [
|
|
9
|
+
{
|
|
10
|
+
"name": "run",
|
|
11
|
+
"chairs": [
|
|
12
|
+
{
|
|
13
|
+
"role": "verify",
|
|
14
|
+
"agent_slug": "e2e-runner",
|
|
15
|
+
"depends_on": [],
|
|
16
|
+
"input_contract": [],
|
|
17
|
+
"output_contract": [
|
|
18
|
+
"e2e-verdict"
|
|
19
|
+
],
|
|
20
|
+
"required_skills": []
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "judge",
|
|
26
|
+
"chairs": [
|
|
27
|
+
{
|
|
28
|
+
"role": "judge",
|
|
29
|
+
"agent_slug": "e2e-suite-judge",
|
|
30
|
+
"depends_on": [
|
|
31
|
+
"verify"
|
|
32
|
+
],
|
|
33
|
+
"input_contract": [
|
|
34
|
+
"e2e-verdict"
|
|
35
|
+
],
|
|
36
|
+
"output_contract": [
|
|
37
|
+
"e2e-report"
|
|
38
|
+
],
|
|
39
|
+
"required_skills": []
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "patent-triage-v0",
|
|
3
|
+
"domain": null,
|
|
4
|
+
"description": "Patentability check / patent triage v0. Takes an invention description and produces the cleanest single-sentence independent claim plus named failure modes; searches a prior-art corpus for nearest-neighbor matches and aggregates a novelty-verdict; refines the claim under the single-cleave discipline given the novelty-verdict; judges GO / NO-GO / NEEDS-WORK with an optional provisional-draft.",
|
|
5
|
+
"agent_slugs": [
|
|
6
|
+
"diamond-cutter",
|
|
7
|
+
"novelty-searcher",
|
|
8
|
+
"claim-rewriter",
|
|
9
|
+
"verdict-judger"
|
|
10
|
+
],
|
|
11
|
+
"phases": [
|
|
12
|
+
{
|
|
13
|
+
"name": "cleave",
|
|
14
|
+
"chairs": [
|
|
15
|
+
{
|
|
16
|
+
"role": "cleave",
|
|
17
|
+
"agent_slug": "diamond-cutter",
|
|
18
|
+
"depends_on": [],
|
|
19
|
+
"input_contract": [],
|
|
20
|
+
"output_contract": [
|
|
21
|
+
"claim-draft",
|
|
22
|
+
"failure-modes"
|
|
23
|
+
],
|
|
24
|
+
"required_skills": [
|
|
25
|
+
"diamond-cutting-discipline"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"intent": "Find the clean cleave plane. From the invention-spec, produce one single-sentence independent claim, enumerate ≥3 named failure modes with bounds, and enumerate ≥5 distinctions (what this is NOT relative to prior art). Outputs: claim-draft + failure-modes."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"name": "search-novelty",
|
|
33
|
+
"chairs": [
|
|
34
|
+
{
|
|
35
|
+
"role": "search-novelty",
|
|
36
|
+
"agent_slug": "novelty-searcher",
|
|
37
|
+
"depends_on": [],
|
|
38
|
+
"input_contract": [],
|
|
39
|
+
"output_contract": [
|
|
40
|
+
"prior-art-hit",
|
|
41
|
+
"novelty-verdict"
|
|
42
|
+
],
|
|
43
|
+
"required_skills": [
|
|
44
|
+
"diamond-cutting-discipline"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"intent": "Search a prior-art corpus (patents + literature) for nearest-neighbor matches to the claim; report hits with similarity scores; aggregate into a novelty-verdict (PASS / FAIL / TOO-CLOSE-TO-CALL). Outputs: prior-art-hit (list) + novelty-verdict."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "refine-claim",
|
|
52
|
+
"chairs": [
|
|
53
|
+
{
|
|
54
|
+
"role": "refine-claim",
|
|
55
|
+
"agent_slug": "claim-rewriter",
|
|
56
|
+
"depends_on": [],
|
|
57
|
+
"input_contract": [],
|
|
58
|
+
"output_contract": [
|
|
59
|
+
"claim-draft"
|
|
60
|
+
],
|
|
61
|
+
"required_skills": [
|
|
62
|
+
"diamond-cutting-discipline"
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"intent": "Rewrite the claim to maximize defensible scope given the novelty-verdict; enforce single-cleave discipline (one independent claim, ≤3 functional elements joined by `comprising`). Output: refined claim-draft."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "judge",
|
|
70
|
+
"chairs": [
|
|
71
|
+
{
|
|
72
|
+
"role": "judge",
|
|
73
|
+
"agent_slug": "verdict-judger",
|
|
74
|
+
"depends_on": [],
|
|
75
|
+
"input_contract": [],
|
|
76
|
+
"output_contract": [
|
|
77
|
+
"triage-verdict",
|
|
78
|
+
"provisional-draft"
|
|
79
|
+
],
|
|
80
|
+
"optional_outputs": [
|
|
81
|
+
"provisional-draft"
|
|
82
|
+
],
|
|
83
|
+
"required_skills": [
|
|
84
|
+
"diamond-cutting-discipline"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"intent": "Produce the final FILEABLE / REFINE-FIRST / NOT-FILEABLE verdict with named axis of refinement when needed. When FILEABLE, also produce a provisional-draft skeleton. Outputs: triage-verdict (always) + provisional-draft (FILEABLE only)."
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"input_types": [
|
|
92
|
+
"invention-spec"
|
|
93
|
+
],
|
|
94
|
+
"output_types": [
|
|
95
|
+
"triage-verdict",
|
|
96
|
+
"provisional-draft"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "patent-triage-v1",
|
|
3
|
+
"domain": "patent-triage",
|
|
4
|
+
"description": "Patentability triage v1 — grounded and adversarial. analyze the disclosure -> draft the broadest defensible claim + dependent tree -> search patents AND literature (coverage-report attests the corpus) -> map element x reference anticipation -> examine (adversary tries to reject on every statute) -> amend to survive -> judge renders the candidate verdict -> gate (a deterministic skill-backed chair) hard-guards it (no FILEABLE without patent coverage + a survived round; INSUFFICIENT-EVIDENCE otherwise) -> draft a provisional with real enablement only when FILEABLE. The gate is runtime enforcement, not prompt guidance. The examine<->amend loop is caller-driven up to max_examine_rounds; survival is a predecessor chain over examine-round-records.",
|
|
5
|
+
"agent_slugs": [
|
|
6
|
+
"disclosure-analyst",
|
|
7
|
+
"claim-architect",
|
|
8
|
+
"prior-art-scout",
|
|
9
|
+
"anticipation-mapper",
|
|
10
|
+
"patent-examiner",
|
|
11
|
+
"claim-amender",
|
|
12
|
+
"triage-judge",
|
|
13
|
+
"spec-drafter"
|
|
14
|
+
],
|
|
15
|
+
"phases": [
|
|
16
|
+
{
|
|
17
|
+
"name": "analyze",
|
|
18
|
+
"chairs": [
|
|
19
|
+
{ "role": "analyze", "agent_slug": "disclosure-analyst", "depends_on": [], "input_contract": [], "output_contract": ["invention-analysis"], "required_skills": [] }
|
|
20
|
+
],
|
|
21
|
+
"intent": "De-spin the disclosure: state the real technical contribution, contrast it with what the inventor claims is novel, enumerate candidate inventive concepts (plural) and embodiments."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"name": "claim",
|
|
25
|
+
"chairs": [
|
|
26
|
+
{ "role": "claim", "agent_slug": "claim-architect", "depends_on": ["analyze"], "input_contract": ["invention-analysis"], "output_contract": ["claim-draft"], "required_skills": ["claim-element-decompose", "diamond-cutting-discipline"] }
|
|
27
|
+
],
|
|
28
|
+
"intent": "Cut the broadest defensible independent claim AND a dependent fallback tree; grade the cleave; name every stripped feature as representation vs load-bearing."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "search",
|
|
32
|
+
"chairs": [
|
|
33
|
+
{ "role": "search", "agent_slug": "prior-art-scout", "depends_on": ["claim"], "input_contract": ["claim-draft"], "output_contract": ["prior-art-hit", "novelty-verdict", "coverage-report"], "required_skills": ["query-expand", "patent-fetch", "citation-verify"] }
|
|
34
|
+
],
|
|
35
|
+
"intent": "Search patents (USPTO PatentsView) AND literature per claim element; retrieve + verify each hit (fetched, not snippet); emit a coverage-report attesting which corpora were actually searched."
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "map",
|
|
39
|
+
"chairs": [
|
|
40
|
+
{ "role": "map", "agent_slug": "anticipation-mapper", "depends_on": ["claim", "search"], "input_contract": ["claim-draft", "prior-art-hit"], "output_contract": ["novelty-analysis"], "required_skills": ["element-mapping-matrix"] }
|
|
41
|
+
],
|
|
42
|
+
"intent": "Build the element x reference anticipation matrix (§102 per element + §103 obviousness combinations) with a derived coverage_fraction. Evidence only — no rejection call."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "examine",
|
|
46
|
+
"chairs": [
|
|
47
|
+
{ "role": "examine", "agent_slug": "patent-examiner", "depends_on": ["claim", "map"], "input_contract": ["claim-draft", "novelty-analysis"], "output_contract": ["examiner-rejection"], "required_skills": ["statutory-checklist"] }
|
|
48
|
+
],
|
|
49
|
+
"intent": "Adversary: try to reject the claim on every statute (§101/§102/§103/§112) via the statutory checklist; silence on a statute is not a clear. The only seat that rejects."
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"name": "amend",
|
|
53
|
+
"chairs": [
|
|
54
|
+
{ "role": "amend", "agent_slug": "claim-amender", "depends_on": ["claim", "examine"], "input_contract": ["claim-draft", "examiner-rejection"], "output_contract": ["examine-round-record"], "required_skills": ["claim-element-decompose"] }
|
|
55
|
+
],
|
|
56
|
+
"intent": "Narrow the claim to overcome the rejections or concede; seal an examine-round-record chained to its predecessor so survival is recomputable across rounds."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "judge",
|
|
60
|
+
"chairs": [
|
|
61
|
+
{ "role": "judge", "agent_slug": "triage-judge", "depends_on": ["search", "map", "examine", "amend"], "input_contract": ["coverage-report", "novelty-analysis", "examiner-rejection", "examine-round-record"], "output_contract": ["triage-verdict", "verdict-record"], "required_skills": ["citation-verify"] }
|
|
62
|
+
],
|
|
63
|
+
"intent": "Render the CANDIDATE verdict (FILEABLE / REFINE-FIRST / NOT-FILEABLE / INSUFFICIENT-EVIDENCE) from the evidence and seal a verdict-record with predecessor links to the disclosure, coverage-report, and final examine-round-record. The hard gate is a separate deterministic chair downstream — the judge states its honest recommendation; it does not enforce the gate itself."
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "gate",
|
|
67
|
+
"chairs": [
|
|
68
|
+
{ "role": "gate", "skill_slug": "verdict-gate", "depends_on": ["judge", "search", "amend"], "input_contract": ["triage-verdict", "coverage-report", "examine-round-record"], "output_contract": ["triage-verdict"], "required_skills": [] }
|
|
69
|
+
],
|
|
70
|
+
"intent": "The hard guard, as deterministic code (no model): downgrade a FILEABLE candidate to INSUFFICIENT-EVIDENCE unless a patent corpus was actually searched (coverage gate) AND the claim survived >=1 examine round (survival gate). Seals the final, gated triage-verdict the drafter acts on — runtime enforcement, not prompt guidance."
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "draft",
|
|
74
|
+
"chairs": [
|
|
75
|
+
{ "role": "draft", "agent_slug": "spec-drafter", "depends_on": ["claim", "gate"], "input_contract": ["claim-draft", "triage-verdict"], "output_contract": ["provisional-draft"], "required_skills": [] }
|
|
76
|
+
],
|
|
77
|
+
"intent": "Only on a FILEABLE verdict (the gated one from the gate chair): a provisional with real §112 enablement — at least one worked embodiment + how-to-build, the surviving claim tree, and an abstract. On any other verdict, nothing."
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"max_examine_rounds": 3,
|
|
81
|
+
"eval_slugs": ["claim-tree-eval", "enablement-eval"],
|
|
82
|
+
"input_types": ["invention-disclosure"],
|
|
83
|
+
"output_types": ["triage-verdict", "verdict-record", "provisional-draft"]
|
|
84
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "seed-from-local-repos-v0",
|
|
3
|
+
"domain": "seeding",
|
|
4
|
+
"description": "Day-1 bootstrap-the-bootstrap. Run once when a user first clones coltrane-oss. Conducts a sweep of the user's existing local repos, distills implicit patterns into draft agents/standards/types, and lets the user accept/reject before adoption. The cold-start solution: instead of preseeding abstract defaults, the framework LEARNS the user from their own work and then tunes the preseed to their domain. Seeding exercise, not ongoing crawl.",
|
|
5
|
+
"agent_slugs": [
|
|
6
|
+
"domain-explorer",
|
|
7
|
+
"problem-definer",
|
|
8
|
+
"solution-developer",
|
|
9
|
+
"delivery-finalizer"
|
|
10
|
+
],
|
|
11
|
+
"phases": [
|
|
12
|
+
{
|
|
13
|
+
"name": "discover",
|
|
14
|
+
"chairs": [
|
|
15
|
+
{
|
|
16
|
+
"role": "discover",
|
|
17
|
+
"agent_slug": "domain-explorer",
|
|
18
|
+
"depends_on": [],
|
|
19
|
+
"input_contract": [],
|
|
20
|
+
"output_contract": [
|
|
21
|
+
"repo-survey"
|
|
22
|
+
],
|
|
23
|
+
"required_skills": []
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"intent": "Diverge. Scan the user's home directory (default: ~/) for git repositories. Per repo, produce a survey-level signal: README first lines, manifest files, commit rhythm (30d), top-level structure, CLAUDE.md/.claude presence. Survey only — no deep code read, no file-by-file analysis. Bounded by parameters fixed at the start of the run: top-N most-recently-touched repos (default N=20), max-depth 1 below ~/, skip node_modules + venv + .git internals."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "define",
|
|
30
|
+
"chairs": [
|
|
31
|
+
{
|
|
32
|
+
"role": "define",
|
|
33
|
+
"agent_slug": "problem-definer",
|
|
34
|
+
"depends_on": [],
|
|
35
|
+
"input_contract": [],
|
|
36
|
+
"output_contract": [
|
|
37
|
+
"project-charter"
|
|
38
|
+
],
|
|
39
|
+
"required_skills": []
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
"intent": "Converge. From the repo-survey cohort, extract a pattern-extraction interpretation: user_signature (one-line characterization), recurrent_workflows (multi-step sequences observed across repos), agent_like_roles (implicit roles the user plays), recurrent_domain_shapes (data shapes the user repeatedly works with). State the prediction: these N patterns are real and these M agents/standards/types are worth drafting. Abort condition: pattern_extraction.confidence_band = low across all observations. Out of scope for this phase: proposing anything specific to a future project — this phase only names the user's existing work-shape. Freeze the prediction before continuing."
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "develop",
|
|
46
|
+
"chairs": [
|
|
47
|
+
{
|
|
48
|
+
"role": "develop",
|
|
49
|
+
"agent_slug": "solution-developer",
|
|
50
|
+
"depends_on": [],
|
|
51
|
+
"input_contract": [],
|
|
52
|
+
"output_contract": [
|
|
53
|
+
"Artifact"
|
|
54
|
+
],
|
|
55
|
+
"required_skills": []
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"intent": "Generate drafts. For each agent_like_role → emit a draft-agent-profile with proposed primitives + system_prompt + tools_allowlist. For each recurrent_workflow → emit a draft-standard with phases. For each recurrent_domain_shape → emit a draft-domain-type with extends + schema. All start at user_acceptance: pending. Present drafts to the user inline (conductor mode). User reviews + responds (accept / reject / refine). On accept: write to .coltrane/agents/, .coltrane/standards/, .coltrane/types/. On refine: user edits inline, then accept. On reject: discard. NEVER auto-adopt — user accepts every artifact at the boundary."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"name": "deliver",
|
|
62
|
+
"chairs": [
|
|
63
|
+
{
|
|
64
|
+
"role": "deliver",
|
|
65
|
+
"agent_slug": "delivery-finalizer",
|
|
66
|
+
"depends_on": [],
|
|
67
|
+
"input_contract": [],
|
|
68
|
+
"output_contract": [
|
|
69
|
+
"Verdict"
|
|
70
|
+
],
|
|
71
|
+
"required_skills": []
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"intent": "Finalize and report. Emit a seeding-verdict: how many surveyed, how many extracted, how many drafted, how many accepted/refined/rejected per kind. Classify the run: complete (every kind had ≥1 acceptance), partial (some kinds empty), refined (user refined heavily — different result than expected), aborted-low-confidence (low confidence + no acceptances), aborted-by-user (user stopped mid-flight). Update the user's README to mirror the active fleet (Claude-maintained 'active projects' section)."
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"execution_modes": {
|
|
78
|
+
"conductor_mode": {
|
|
79
|
+
"default": true,
|
|
80
|
+
"description": "User clones coltrane-oss, says 'let's do seed-from-local-repos-v0' or 'fan out and learn about my work from my local repos'. Claude reads this standard, walks the 4 phases, prompts the user at each phase boundary + each draft-acceptance moment.",
|
|
81
|
+
"user_invocation_examples": [
|
|
82
|
+
"let's do seed-from-local-repos-v0",
|
|
83
|
+
"fan out and learn about my work from my local repos",
|
|
84
|
+
"learn my work",
|
|
85
|
+
"seed coltrane from my existing repos"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"dispatch_mode": {
|
|
89
|
+
"description": "Power-user: each phase dispatched as a subagent via Task tool. Allowlist enforcement at the subagent boundary."
|
|
90
|
+
},
|
|
91
|
+
"score_is_the_same": "The standard JSON IS the score regardless of mode."
|
|
92
|
+
},
|
|
93
|
+
"outputs": {
|
|
94
|
+
"discover": [
|
|
95
|
+
"repo-survey"
|
|
96
|
+
],
|
|
97
|
+
"define": [
|
|
98
|
+
"pattern-extraction"
|
|
99
|
+
],
|
|
100
|
+
"develop": [
|
|
101
|
+
"draft-agent-profile",
|
|
102
|
+
"draft-standard",
|
|
103
|
+
"draft-domain-type"
|
|
104
|
+
],
|
|
105
|
+
"deliver": [
|
|
106
|
+
"seeding-verdict"
|
|
107
|
+
]
|
|
108
|
+
},
|
|
109
|
+
"out_of_scope": [
|
|
110
|
+
"NOT an ongoing crawl — this is a one-time seeding exercise. Re-running it later is allowed (e.g., quarterly) but each run is a discrete cycle.",
|
|
111
|
+
"NOT a code-aware deep read — survey-level only. Repo-survey signals capture shape, not mechanism.",
|
|
112
|
+
"NOT auto-adoption — every draft requires user accept at the develop→deliver seam.",
|
|
113
|
+
"NOT scanning everything — bounded by top-N + max-depth + skip-list. Fixed at the start of the run."
|
|
114
|
+
]
|
|
115
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "sub_thread_invocation",
|
|
3
|
+
"domain": "self_judge",
|
|
4
|
+
"agent_slugs": [
|
|
5
|
+
"sub_thread_trace_sensor",
|
|
6
|
+
"sub_thread_soft_judge"
|
|
7
|
+
],
|
|
8
|
+
"phases": [
|
|
9
|
+
{
|
|
10
|
+
"name": "sense",
|
|
11
|
+
"chairs": [
|
|
12
|
+
{
|
|
13
|
+
"role": "sense",
|
|
14
|
+
"agent_slug": "sub_thread_trace_sensor",
|
|
15
|
+
"depends_on": [],
|
|
16
|
+
"input_contract": [],
|
|
17
|
+
"output_contract": [
|
|
18
|
+
"parsed-conversation-trace"
|
|
19
|
+
],
|
|
20
|
+
"required_skills": []
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "interpret",
|
|
26
|
+
"chairs": [
|
|
27
|
+
{
|
|
28
|
+
"role": "interpret",
|
|
29
|
+
"agent_slug": "sub_thread_soft_judge",
|
|
30
|
+
"depends_on": [],
|
|
31
|
+
"input_contract": [],
|
|
32
|
+
"output_contract": [
|
|
33
|
+
"soft-verdict"
|
|
34
|
+
],
|
|
35
|
+
"required_skills": []
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
"identity": {
|
|
41
|
+
"id": "sub_thread_invocation@1",
|
|
42
|
+
"name": "Sub-thread invocation soft-judge",
|
|
43
|
+
"version": 1,
|
|
44
|
+
"purpose": "Self-referential: coltrane judges coltrane's own phase-15 e2e sub-thread tests on four soft criteria the hard-asserts can't reach. SENSE parses a transcript + recorder log into a turn list; INTERPRET LLM-scores parent-context preservation, child stay-on-task, inter-turn coherence, and graceful degradation."
|
|
45
|
+
},
|
|
46
|
+
"prompt_templates": {
|
|
47
|
+
"sense": "You are the SENSE phase of the sub_thread_invocation standard.\n\nINPUT: gig_input.transcript_path (string, absolute) + gig_input.recorder_log_path (string, absolute). Either file may be empty or missing — that is itself a finding and must be reported verbatim.\n\nTASK: parse the transcript (typically stream-json from `claude -p --output-format stream-json`) into a structured `parsed-conversation-trace`. For each turn extract: parent_session_id (null if root), child_session_id, prompt (user/parent prompt text), response (assistant text), timestamp (ISO8601 or null), tool_calls (array, may be empty). Also report whether the recorder log was empty.\n\nOUTPUT (single JSON object, no fence, no prose):\n{\n \"transcript_path\": \"<echo of input>\",\n \"recorder_log_path\": \"<echo of input>\",\n \"transcript_present\": <bool>,\n \"recorder_log_present\": <bool>,\n \"recorder_log_empty\": <bool>,\n \"turns\": [\n { \"turn_idx\": 0, \"parent_session_id\": null, \"child_session_id\": \"<sid>\", \"prompt\": \"<text>\", \"response\": \"<text>\", \"timestamp\": \"<iso or null>\", \"tool_calls\": [] }\n ],\n \"notes\": \"<any honesty-note about parse failures or empty inputs>\"\n}\n\nIf the transcript file is missing or empty, set transcript_present=false, turns=[], and put the diagnosis in `notes`. Do NOT fabricate turns.",
|
|
48
|
+
"interpret": "You are the INTERPRET phase of the sub_thread_invocation standard — the soft-judge.\n\nINPUT: a `parsed-conversation-trace` from the SENSE phase (gig_input.trace).\n\nTASK: score the conversation on four soft criteria the hard-asserts cannot reach. Each criterion gets a 0-100 score and a rationale grounded in the actual turns (or, if turns=[], a rationale that names exactly why the criterion cannot be judged from this trace).\n\nCRITERIA:\n a. parent_context_preservation: when the child --resumes with a follow-up, does the parent's named context (deals, units, north-stars, prior outputs) survive into the child's next response? Look for echoes of prior-turn entities.\n b. child_stay_on_task: across N turns, does the assistant stay focused on the parent's original ask, or drift to unrelated content?\n c. inter_turn_coherence: do successive responses build on each other (referencing prior turns, accumulating state) or read as disjoint single-shots?\n d. graceful_degradation: if the conversation exceeds the context window or hits a structural failure, does the response degrade gracefully (summarize + continue, name the limit) or hard-fail (stack trace, silent corruption)?\n\nnot-judgeable CASE: if turns=[] (because the underlying test failed before producing a transcript), do NOT fabricate scores. Set each score to null and put the diagnosis in `rationale`. Set `overall_verdict_shade` to \"unjudgeable\".\n\nVERDICT SHADE (overall):\n - \"full-soft-pass\": all four scores >= 70, no structural failures\n - \"partly\": at least one score >= 70 AND no score in {null, 0..29}, OR mixed signal\n - \"fail\": any score < 30 OR a structural failure observed\n - \"unjudgeable\": turns=[] or trace insufficient\n\nOUTPUT (single JSON object, no fence, no prose):\n{\n \"criteria\": {\n \"parent_context_preservation\": { \"score\": <0-100 or null>, \"rationale\": \"<text>\" },\n \"child_stay_on_task\": { \"score\": <0-100 or null>, \"rationale\": \"<text>\" },\n \"inter_turn_coherence\": { \"score\": <0-100 or null>, \"rationale\": \"<text>\" },\n \"graceful_degradation\": { \"score\": <0-100 or null>, \"rationale\": \"<text>\" }\n },\n \"overall_verdict_shade\": \"full-soft-pass | partly | fail | unjudgeable\",\n \"top_insight\": \"<the one finding the hard-asserts missed; ground it in a specific turn or in the structural absence of one>\"\n}"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "summarize",
|
|
3
|
+
"domain": "demo",
|
|
4
|
+
"agent_slugs": [
|
|
5
|
+
"sensor",
|
|
6
|
+
"summarizer"
|
|
7
|
+
],
|
|
8
|
+
"phases": [
|
|
9
|
+
{
|
|
10
|
+
"name": "sense",
|
|
11
|
+
"chairs": [
|
|
12
|
+
{
|
|
13
|
+
"role": "sense",
|
|
14
|
+
"agent_slug": "sensor",
|
|
15
|
+
"depends_on": [],
|
|
16
|
+
"input_contract": [],
|
|
17
|
+
"output_contract": [
|
|
18
|
+
"raw-note"
|
|
19
|
+
],
|
|
20
|
+
"required_skills": []
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "interpret",
|
|
26
|
+
"chairs": [
|
|
27
|
+
{
|
|
28
|
+
"role": "interpret",
|
|
29
|
+
"agent_slug": "summarizer",
|
|
30
|
+
"depends_on": [],
|
|
31
|
+
"input_contract": [],
|
|
32
|
+
"output_contract": [
|
|
33
|
+
"summary"
|
|
34
|
+
],
|
|
35
|
+
"required_skills": []
|
|
36
|
+
}
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|