feat(councils): add scaffold prompt hooks and checked-in scaffold files

This commit is contained in:
William Valentin
2026-02-21 11:01:12 -08:00
parent c322e3ab51
commit cfd7fa6fd0
5 changed files with 613 additions and 2 deletions
@@ -0,0 +1,259 @@
{
"generated_at": "2026-02-21T18:05:48.200896",
"version": "1.0.0",
"entities": {
"councils": {
"D": {
"name": "Deterministic",
"bias": [
"clarity",
"feasibility",
"low_drift"
]
},
"P": {
"name": "Probabilistic",
"bias": [
"novelty",
"exploration",
"reframing"
]
}
},
"roles": [
"arbiter",
"free_thinker",
"grounder",
"writer"
],
"meta_roles": [
"meta_arbiter",
"meta_writer"
]
},
"schemas": {
"input_package": {
"required": [
"problem_statement",
"success_definition",
"constraints",
"context",
"timebox"
],
"optional": [
"stakeholders",
"non_goals",
"risk_tolerance",
"glossary"
]
},
"idea_card": {
"id": "string",
"title": "string",
"one_liner": "string",
"mechanism": [
"string"
],
"assumptions": [
"string"
],
"constraints": [
"string"
],
"mve": {
"steps": [
"string"
],
"success_metric": "string",
"time_cost": "string",
"resources": [
"string"
]
},
"risks": [
"string"
],
"upside": "string",
"tags": [
"string"
]
},
"bridge_packet": {
"top_ideas": [
"idea_card"
],
"fragile_assumptions": [
"string"
],
"key_questions": [
"string"
],
"themes": [
"string"
],
"do_not_do": [
"string"
]
},
"score": {
"novelty": "0-5",
"feasibility": "0-5",
"leverage": "0-5",
"clarity": "0-5",
"evidence_alignment": "0-5",
"decision": [
"advance",
"hold",
"drop"
]
},
"brief": {
"version": "string",
"summary": [
"string"
],
"shortlist": [
{
"idea_id": "string",
"score": "score",
"notes": "string"
}
],
"graph_delta": {
"nodes_added": [
"object"
],
"edges_added": [
"object"
],
"nodes_updated": [
"object"
],
"edges_updated": [
"object"
]
},
"open_questions": [
"string"
],
"next_actions": [
"string"
]
},
"final_pack": {
"primary_bets": [
"idea_card"
],
"secondary_bets": [
"idea_card"
],
"experiments": [
"object"
],
"assumptions_to_validate": [
"string"
],
"decision_log": [
"string"
],
"kill_criteria": [
"string"
],
"next_data": [
"string"
]
}
},
"workflow": [
{
"phase": 0,
"name": "setup",
"artifacts_out": [
"context_snapshot_v0"
]
},
{
"phase": 1,
"name": "independent_ideation",
"artifacts_out": [
"D_brief_v1",
"P_brief_v1"
]
},
{
"phase": 2,
"name": "bridge",
"routes": [
"D.arbiter<->P.arbiter"
],
"artifacts_out": [
"bridge_D_to_P",
"bridge_P_to_D"
]
},
{
"phase": 3,
"name": "second_pass",
"artifacts_out": [
"D_brief_v2",
"P_brief_v2"
]
},
{
"phase": 4,
"name": "meta_merge",
"artifacts_out": [
"final_idea_brief_pack"
]
}
],
"prompts": {
"D": {
"arbiter": "You are the Arbiter for the Deterministic Council. Manage phases, request Idea Cards, score with rubric, select and stop on convergence. Minimal speculation. Do not generate more than 2 original ideas yourself.",
"free_thinker": "Generate 1015 feasible Idea Cards bounded by constraints. Include mechanisms. Keep each card short.",
"grounder": "Expand selected Idea Cards with Preconditions (X/Y/Z), dependencies, and MVEs with success metrics. Do not veto; propose cheap proxy tests if needed.",
"writer": "Maintain ideation graph and versioned briefs. No new ideas. Track deltas and tensions."
},
"P": {
"arbiter": "You are the Arbiter for the Probabilistic Council. Protect divergence early, enforce Idea Cards, require uncertainty labels, then request grounding and testability. Avoid premature convergence.",
"free_thinker": "Generate 1525 novel Idea Cards with plausible mechanisms. Mark [SPECULATIVE] vs [GROUNDED]. Expand top 5.",
"grounder": "Preserve weirdness; extract kernel; define cheap MVEs with clear success metrics. Do not kill ideas.",
"writer": "Maintain ideation graph and versioned briefs. No new ideas. Track deltas and tensions."
},
"meta_arbiter": "Ingest D Brief v2 and P Brief v2. Apply rubric consistently. Select 13 primary bets and 24 secondary bets with MVEs and kill criteria. Produce rationale and decision log."
},
"graph_model": {
"node_types": [
"idea",
"assumption",
"constraint",
"experiment",
"evidence"
],
"edge_types": [
"supports",
"depends_on",
"risks",
"tests",
"contradicts"
]
},
"protocol": {
"allowed_routes": [
"D.arbiter<->D.free_thinker",
"D.arbiter<->D.grounder",
"D.arbiter<->D.writer",
"P.arbiter<->P.free_thinker",
"P.arbiter<->P.grounder",
"P.arbiter<->P.writer",
"D.arbiter<->P.arbiter (bridge only)",
"meta_arbiter reads D_brief_v2 and P_brief_v2"
],
"hard_rules": [
"No cross-council messages except Bridge Packets.",
"Writers do not invent new ideas.",
"Grounders do not veto; they concretize.",
"Arbiters stop on convergence or diminishing novelty."
]
}
}