@productbrain/mcp 0.0.1-beta.4595 → 0.0.1-beta.4600
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.
|
@@ -1787,7 +1787,7 @@ function buildClassifierUnknownResult() {
|
|
|
1787
1787
|
return {
|
|
1788
1788
|
content: [{
|
|
1789
1789
|
type: "text",
|
|
1790
|
-
text: "I could not infer a collection confidently from this input.\n\nPlease provide `collection`, or rewrite with clearer intent (decision/problem/definition/insight/
|
|
1790
|
+
text: "I could not infer a collection confidently from this input.\n\nPlease provide `collection`, or rewrite with clearer intent (decision/problem/definition/insight/work-package)."
|
|
1791
1791
|
}],
|
|
1792
1792
|
structuredContent: failure(
|
|
1793
1793
|
"VALIDATION_ERROR",
|
|
@@ -2917,7 +2917,7 @@ Use \`entries action=get\` to inspect the existing entry, or \`entries action=up
|
|
|
2917
2917
|
if (isBetOrGoal && !hasStrategyLink) {
|
|
2918
2918
|
lines.push("");
|
|
2919
2919
|
lines.push(
|
|
2920
|
-
`**Strategy link:** This ${isWorkPackageCapture ? "
|
|
2920
|
+
`**Strategy link:** This ${isWorkPackageCapture ? "work package" : "goal"} doesn't connect to any strategy entry. Consider linking before accepting. Use \`relations action=suggest entryId="${finalEntryId}"\` to find strategy entries to connect to.`
|
|
2921
2921
|
);
|
|
2922
2922
|
await recordSessionActivity({ strategyLinkWarnedForEntryId: internalId });
|
|
2923
2923
|
}
|
|
@@ -7120,7 +7120,7 @@ function formatConfidencePass(result2) {
|
|
|
7120
7120
|
return {
|
|
7121
7121
|
content: [{ type: "text", text: lines.join("\n") }],
|
|
7122
7122
|
structuredContent: success(
|
|
7123
|
-
`Confidence pass: ${changes.entries.length} changes, ${result2.workPackageCount} active
|
|
7123
|
+
`Confidence pass: ${changes.entries.length} changes, ${result2.workPackageCount} active work packages, ${result2.tensionCount} active tensions.`,
|
|
7124
7124
|
{ ...result2, trustFilterActive: true }
|
|
7125
7125
|
)
|
|
7126
7126
|
};
|
|
@@ -8471,7 +8471,7 @@ function buildTaskAlignmentLines(ta) {
|
|
|
8471
8471
|
var CORE_PROTOCOL_BASE = [
|
|
8472
8472
|
'**Search before proposing.** Before suggesting new features, architecture, or changes, search the Chain: `entries action=search query="<relevant terms>"`. Build on what exists.',
|
|
8473
8473
|
"**Reference by ID.** When discussing a topic that has Chain entries, cite them by entry ID (e.g. `DEC-50`, `PRI-3`). This keeps conversations grounded in shared knowledge.",
|
|
8474
|
-
"**Check scope.** If the proposed work doesn't fall under an active
|
|
8474
|
+
"**Check scope.** If the proposed work doesn't fall under an active work package, stop and say so. Do not design implementation for out-of-scope work without explicit user go-ahead.",
|
|
8475
8475
|
`**Capture continuously.** When a decision, tension, insight, or new term surfaces during work, capture it as a draft immediately. Don't defer to "later."`
|
|
8476
8476
|
];
|
|
8477
8477
|
var RULE5_WITH_GOVERNANCE = "**Validate against governance.** Before proposing any solution, check it against the Workspace Governance directives below. If your proposal conflicts with a principle, standard, or business rule \u2014 stop, name the conflict, and get explicit user confirmation before proceeding.";
|
|
@@ -8557,10 +8557,10 @@ function buildOperatingProtocol(governanceOrStandards, task) {
|
|
|
8557
8557
|
}
|
|
8558
8558
|
function formatBetConstellationLines(constellationEntries, constellationBetName) {
|
|
8559
8559
|
if (!constellationEntries?.length) return [];
|
|
8560
|
-
const betName = constellationBetName ?? "Matched
|
|
8560
|
+
const betName = constellationBetName ?? "Matched work package";
|
|
8561
8561
|
const lines = [
|
|
8562
|
-
`##
|
|
8563
|
-
"_Decisions, tensions, and features related to the matched
|
|
8562
|
+
`## Work Package Constellation \u2014 ${betName}`,
|
|
8563
|
+
"_Decisions, tensions, and features related to the matched work package._",
|
|
8564
8564
|
""
|
|
8565
8565
|
];
|
|
8566
8566
|
const bySlug = /* @__PURE__ */ new Map();
|
|
@@ -8597,7 +8597,7 @@ function formatWorkstreamHealthLines(workstreams) {
|
|
|
8597
8597
|
if (!workstreams?.length) return [];
|
|
8598
8598
|
const lines = ["## Workstream Health", ""];
|
|
8599
8599
|
for (const ws of workstreams) {
|
|
8600
|
-
const betDetail = ws.activeBetNames?.length ? ws.activeBetNames.join(", ") : `${ws.betCount}
|
|
8600
|
+
const betDetail = ws.activeBetNames?.length ? ws.activeBetNames.join(", ") : `${ws.betCount} work package(s)`;
|
|
8601
8601
|
lines.push(`- ${ws.name} \u2014 ${betDetail}`);
|
|
8602
8602
|
}
|
|
8603
8603
|
lines.push("");
|
|
@@ -10611,8 +10611,8 @@ var SHAPE_WORKFLOW_DESCRIPTOR = {
|
|
|
10611
10611
|
icon: "\u25C6",
|
|
10612
10612
|
facilitatorPreamble: `You are now in **Shaping Mode**. The shaping skill owns the facilitation loop end-to-end \u2014 read it for scoring rubrics, investigation patterns, and the capture flow.
|
|
10613
10613
|
|
|
10614
|
-
Use \`capture\` to create constellation entries (elements, risks, decisions, glossary terms) linked to the
|
|
10615
|
-
Use \`session action=commit-constellation\` to atomically accept the
|
|
10614
|
+
Use \`capture\` to create constellation entries (elements, risks, decisions, glossary terms) linked to the work package.
|
|
10615
|
+
Use \`session action=commit-constellation\` to atomically accept the work package and all linked entries when the shape is complete.
|
|
10616
10616
|
Use \`workflows action=checkpoint\` after each round to persist progress to the durable run.`,
|
|
10617
10617
|
rounds: [
|
|
10618
10618
|
{
|
|
@@ -10621,7 +10621,7 @@ Use \`workflows action=checkpoint\` after each round to persist progress to the
|
|
|
10621
10621
|
label: "Gather Context",
|
|
10622
10622
|
type: "open",
|
|
10623
10623
|
instruction: "Before shaping, let's see what the Chain already knows. Search for related entries, business rules, and existing decisions.",
|
|
10624
|
-
facilitatorGuidance: "**Investigate proactively.** Spawn sub-agents in parallel: (1) `explore` agent to search the codebase for code related to the
|
|
10624
|
+
facilitatorGuidance: "**Investigate proactively.** Spawn sub-agents in parallel: (1) `explore` agent to search the codebase for code related to the work package topic \u2014 find modules, patterns, and pain points. (2) `generalPurpose` agent to search the Chain: call `orient`, use `entries action=search` with keywords, surface related tensions, active work packages, and applicable business rules. Synthesize both into a 3-5 line context brief: what the codebase reveals, what the Chain knows, what governance applies. Present with IDs and file paths. Build a system map: what modules, data flows, and contracts exist in this area today? Check governance: do any principles, standards, or business rules constrain this design space? Then transition: 'Here's what I found. Does this match the problem you're seeing?'",
|
|
10625
10625
|
outputSchema: {
|
|
10626
10626
|
field: "context",
|
|
10627
10627
|
description: "System map, Chain context, governance constraints, related entries",
|
|
@@ -10668,7 +10668,7 @@ Use \`workflows action=checkpoint\` after each round to persist progress to the
|
|
|
10668
10668
|
label: "Find the Elements",
|
|
10669
10669
|
type: "open",
|
|
10670
10670
|
instruction: "What are the solution elements? Think breadboard level \u2014 places, affordances, connections. What's the architecture?",
|
|
10671
|
-
facilitatorGuidance: "**Investigate first.** Spawn sub-agents to search the codebase for affected modules, existing architecture patterns, and API boundaries. Synthesize findings into 3-5 proposed solution elements at breadboard level, citing specific files and modules. **Five-path trace per element:** For each element, trace: (1) what data flows through it, (2) what contracts it relies on, (3) what contracts it alters, (4) what second-order effects downstream, (5) what happens at boundaries (batch, error, empty, scale). Present proposals for user reaction: 'Based on the codebase, here are the elements I'd suggest.' For each confirmed element, use `capture` with collection='features' to create a features entry linked to the
|
|
10671
|
+
facilitatorGuidance: "**Investigate first.** Spawn sub-agents to search the codebase for affected modules, existing architecture patterns, and API boundaries. Synthesize findings into 3-5 proposed solution elements at breadboard level, citing specific files and modules. **Five-path trace per element:** For each element, trace: (1) what data flows through it, (2) what contracts it relies on, (3) what contracts it alters, (4) what second-order effects downstream, (5) what happens at boundaries (batch, error, empty, scale). Present proposals for user reaction: 'Based on the codebase, here are the elements I'd suggest.' For each confirmed element, use `capture` with collection='features' to create a features entry linked to the work package via part_of. For Big Batch: also investigate architecture \u2014 search for layer boundaries and dependency directions, then propose architecture. Check business rules: do any elements conflict with governance surfaced in Round 1? Capture new glossary terms and decisions as they surface. Aim for 3-5 elements. When elements and architecture are well-covered, present for confirmation.",
|
|
10672
10672
|
outputSchema: {
|
|
10673
10673
|
field: "elements",
|
|
10674
10674
|
description: "Core solution elements and architecture",
|
|
@@ -10683,7 +10683,7 @@ Use \`workflows action=checkpoint\` after each round to persist progress to the
|
|
|
10683
10683
|
label: "De-risk \u2014 Rabbit Holes & No-Gos",
|
|
10684
10684
|
type: "open",
|
|
10685
10685
|
instruction: "What could go wrong? What are we NOT building? Walk through the solution slowly and find the risks.",
|
|
10686
|
-
facilitatorGuidance: "**Investigate first.** Spawn sub-agents to search the codebase for fragile code, tight coupling, missing tests, performance-sensitive paths, and external dependencies near the affected modules. Propose risks with evidence: 'I found that X module has no tests and is tightly coupled to Y \u2014 this is a rabbit hole.' Every confirmed risk MUST be captured using `capture` with collection='tensions' \u2014 each becomes a tensions entry linked to the
|
|
10686
|
+
facilitatorGuidance: "**Investigate first.** Spawn sub-agents to search the codebase for fragile code, tight coupling, missing tests, performance-sensitive paths, and external dependencies near the affected modules. Propose risks with evidence: 'I found that X module has no tests and is tightly coupled to Y \u2014 this is a rabbit hole.' Every confirmed risk MUST be captured using `capture` with collection='tensions' \u2014 each becomes a tensions entry linked to the work package via constrains. Push for mitigations \u2014 every risk needs a patch or explicit acceptance. Then declare no-gos: 'Based on what I've seen, I'd suggest these no-gos.' Every no-go MUST also be captured. **Counter-Metric Mandate (STD-19):** If the derisking references any quantitative gates or metrics (accuracy targets, performance budgets, adoption thresholds), stress-test them: 'What's the denominator? What gets excluded? What counter-metric would expose a false positive?' A metric gate that can be gamed by abstaining or cherry-picking the population is not a gate \u2014 name the compound metric that can't be gamed. When risks and boundaries are well-covered, present Shape Go gate: 'Is this buildable within the appetite?'",
|
|
10687
10687
|
questions: [
|
|
10688
10688
|
{
|
|
10689
10689
|
id: "shape-go",
|
|
@@ -10709,7 +10709,7 @@ Use \`workflows action=checkpoint\` after each round to persist progress to the
|
|
|
10709
10709
|
label: "Validate & Build Contract",
|
|
10710
10710
|
type: "synthesis",
|
|
10711
10711
|
instruction: "Check completeness. Generate the build contract. Review the full scorecard.",
|
|
10712
|
-
facilitatorGuidance: "Review the scorecard from the shaping skill's scoring rubric. Present it as a table. Verify the 5 core ingredients: Problem, Appetite, Solution elements, Rabbit Holes, No-Gos. For Big Batch: also verify Architecture, narrative hook, and value-flow annotations. **System coherence confirmation:** Were all five paths traced for each element? State which interaction risks remain unverified \u2014 these become explicit risks in the
|
|
10712
|
+
facilitatorGuidance: "Review the scorecard from the shaping skill's scoring rubric. Present it as a table. Verify the 5 core ingredients: Problem, Appetite, Solution elements, Rabbit Holes, No-Gos. For Big Batch: also verify Architecture, narrative hook, and value-flow annotations. **System coherence confirmation:** Were all five paths traced for each element? State which interaction risks remain unverified \u2014 these become explicit risks in the work package, not surprises during implementation. **Vision narrative (TEN-281):** Write one paragraph \u2014 how does this bet serve the product vision? **Test plan (TEN-281):** How will we know this is done? Concrete scenarios, not 'when tests pass.' **Counter-Metric Mandate (STD-19):** If the scorecard or build contract contains metrics or gates, verify each has a denominator, a coverage rate, and a counter-metric. Flag any gate that can be satisfied by abstaining or excluding the hard cases. Present the build contract. Ask: 'Anything to adjust before we capture to the Chain?'",
|
|
10713
10713
|
outputSchema: {
|
|
10714
10714
|
field: "validation",
|
|
10715
10715
|
description: "Completeness check result and build contract",
|
|
@@ -10723,7 +10723,7 @@ Use \`workflows action=checkpoint\` after each round to persist progress to the
|
|
|
10723
10723
|
label: "Capture & Accept",
|
|
10724
10724
|
type: "close",
|
|
10725
10725
|
instruction: "Capture the pitch to the Chain. Accept draft entries. Connect the constellation.",
|
|
10726
|
-
facilitatorGuidance: "List all draft entries created during shaping (elements, risks, decisions, glossary terms). Ask the user to confirm: 'Ready to accept these onto the Chain?' Call `session action=commit-constellation` to atomically accept the
|
|
10726
|
+
facilitatorGuidance: "List all draft entries created during shaping (elements, risks, decisions, glossary terms). Ask the user to confirm: 'Ready to accept these onto the Chain?' Call `session action=commit-constellation` to atomically accept the work package and all linked entries. Then `relations action=suggest entryId='<betId>'` to discover connections. Create the top 3 suggested relations via `relations action=batch-create`. Thank the user. State: what was shaped, how many constellation entries captured, what the implementer inherits.",
|
|
10727
10727
|
outputSchema: {
|
|
10728
10728
|
field: "capture",
|
|
10729
10729
|
description: "Final capture summary \u2014 entries accepted, relations created",
|
|
@@ -10815,7 +10815,7 @@ var IMPLEMENTATION_REVIEW_WORKFLOW_DESCRIPTOR = {
|
|
|
10815
10815
|
|
|
10816
10816
|
## Tool Usage
|
|
10817
10817
|
|
|
10818
|
-
- \`orient\` or \`start\` \u2014 governance, active
|
|
10818
|
+
- \`orient\` or \`start\` \u2014 governance, active work packages, stale entries
|
|
10819
10819
|
- \`quality action=check entryId="<BET-ID>"\` \u2014 score against collection criteria
|
|
10820
10820
|
- \`chain-review action=gate chainEntryId="<id>"\` \u2014 coherence gate for chains
|
|
10821
10821
|
- \`quality action=verify-chain\` \u2014 glossary code mappings, cross-references vs codebase
|
|
@@ -10845,7 +10845,7 @@ This block is the final deliverable of the review. Everything else is supporting
|
|
|
10845
10845
|
label: "Orient & Scope",
|
|
10846
10846
|
type: "open",
|
|
10847
10847
|
instruction: "Apply the Review scope rules: infer scope from this conversation, git diff, and recent edits (default = work in this conversation only). Enumerate every file touched (created, modified, deleted). Call orient or start, then context action=gather for the inferred BET/feature. State scope in one explicit sentence and list all files in scope. Only ask the participant if scope is ambiguous. The review will assess: holistic coherence with our system, whether this brings us closer to our vision, and whether it makes our code and architecture cleaner.",
|
|
10848
|
-
facilitatorGuidance: "Infer scope from conversation context, git status/diff, and recent edits \u2014 default is work in this conversation only. List every file touched (created, modified, or deleted) in the work under review; scope is not complete without this list. Call orient or start to load governance and active
|
|
10848
|
+
facilitatorGuidance: "Infer scope from conversation context, git status/diff, and recent edits \u2014 default is work in this conversation only. List every file touched (created, modified, or deleted) in the work under review; scope is not complete without this list. Call orient or start to load governance and active work packages. Use context action=gather task='implementation review for [inferred-BET-or-feature]' to load related entries. State scope explicitly in one sentence (e.g. 'Scope: changes in this conversation for BET-72'). Present: stated scope, the full list of files touched, relevant BETs/DECs/BRs, and any stale entries orient surfaces. Frame the review: we will assess holistic coherence with our system, whether this brings us closer to our vision, and whether it makes our code and architecture cleaner. Ask the participant only if scope is ambiguous (e.g. 'Only the files we changed, or the whole feature?'). Note vision anchors (principles, strategy, active work-package constraints) \u2014 you will reference these in Rounds 02\u201305.",
|
|
10849
10849
|
outputSchema: {
|
|
10850
10850
|
field: "scope",
|
|
10851
10851
|
description: "Explicit scope statement, every file touched, WP/feature IDs, related Chain context, vision anchors",
|
|
@@ -10970,14 +10970,14 @@ var PROCESS_CHANGE_WORKFLOW_DESCRIPTOR = {
|
|
|
10970
10970
|
1. **Be fast.** This is a 5-minute workflow, not a 45-minute ceremony. Respect the user's flow state.
|
|
10971
10971
|
2. **Orient first.** Call orient to load workspace context \u2014 but present only what's relevant to the change, not the full briefing.
|
|
10972
10972
|
3. **Capture the why.** The single most important thing: why is this change happening? The what is usually obvious from the code. The why is what evaporates.
|
|
10973
|
-
4. **Link to what exists.** Search the Chain for related entries. If this change was triggered by a tension,
|
|
10973
|
+
4. **Link to what exists.** Search the Chain for related entries. If this change was triggered by a tension, work package, or decision \u2014 link it. If it creates a new decision or surfaces a new tension \u2014 capture that too.
|
|
10974
10974
|
5. **Finalize through the workflow substrate.** Complete the terminal round with \`workflows action=checkpoint ... isFinal=true\`. The substrate will classifier-route the primary record and attach it to the durable run.
|
|
10975
10975
|
6. **Don't over-process.** If the user gives you everything in one message, move quickly through the required checkpoints in order, then finalize. Not every round needs a conversation.
|
|
10976
10976
|
7. **End with the link.** Always finish by connecting the new entry to related Chain knowledge via graph suggest.
|
|
10977
10977
|
|
|
10978
10978
|
## Tool Usage
|
|
10979
10979
|
|
|
10980
|
-
- \`orient\` \u2014 load workspace context (governance, active
|
|
10980
|
+
- \`orient\` \u2014 load workspace context (governance, active work packages, stale entries)
|
|
10981
10981
|
- \`entries action=search\` \u2014 find related entries
|
|
10982
10982
|
- \`capture\` \u2014 manual fallback only if workflow finalization cannot safely route the entry
|
|
10983
10983
|
- \`relations action=suggest\` \u2014 discover connections
|
|
@@ -11026,7 +11026,7 @@ var PROCESS_CHANGE_WORKFLOW_DESCRIPTOR = {
|
|
|
11026
11026
|
label: "Impact & Links",
|
|
11027
11027
|
type: "synthesis",
|
|
11028
11028
|
instruction: "What's affected? Are there existing Chain entries that relate to this change?",
|
|
11029
|
-
facilitatorGuidance: "Search the Chain for entries that should be linked: entries action=search with keywords from the change. Check: does this change affect an active
|
|
11029
|
+
facilitatorGuidance: "Search the Chain for entries that should be linked: entries action=search with keywords from the change. Check: does this change affect an active work package? Does it resolve a known tension? Does it supersede an existing decision? If the change is small and self-contained, this round can be brief \u2014 just confirm there's nothing obvious to link. If there are stale entries that this change invalidates, flag them for reconfirmation.",
|
|
11030
11030
|
outputSchema: {
|
|
11031
11031
|
field: "impact",
|
|
11032
11032
|
description: "Affected entries and proposed links",
|
|
@@ -13153,7 +13153,7 @@ No constellation entries were accepted.`
|
|
|
13153
13153
|
return {
|
|
13154
13154
|
content: [{
|
|
13155
13155
|
type: "text",
|
|
13156
|
-
text: `#
|
|
13156
|
+
text: `# Work package accept failed
|
|
13157
13157
|
|
|
13158
13158
|
\`${betId}\` could not be accepted: ${msg}
|
|
13159
13159
|
|
|
@@ -13161,7 +13161,7 @@ No constellation entries were accepted.`
|
|
|
13161
13161
|
}],
|
|
13162
13162
|
structuredContent: failure(
|
|
13163
13163
|
"BACKEND_ERROR",
|
|
13164
|
-
`
|
|
13164
|
+
`Work package accept failed: ${msg}`,
|
|
13165
13165
|
"Retry or check for accept blockers.",
|
|
13166
13166
|
[{ tool: "session", description: "Resume session", parameters: { action: "resume", betEntryId: betId } }],
|
|
13167
13167
|
diagnostics
|
|
@@ -13187,7 +13187,7 @@ No constellation entries were accepted.`
|
|
|
13187
13187
|
hasIssues ? `# Proposal created with issues` : `# Proposal created`,
|
|
13188
13188
|
"",
|
|
13189
13189
|
`Workspace uses consent-based governance. \`${betId}\` was submitted as a proposal \u2014 it will be accepted when approved.`,
|
|
13190
|
-
`No linked entries were accepted because the
|
|
13190
|
+
`No linked entries were accepted because the work package itself is still awaiting approval.`
|
|
13191
13191
|
);
|
|
13192
13192
|
} else {
|
|
13193
13193
|
lines.push(
|
|
@@ -16127,13 +16127,13 @@ var AGENT_CHEATSHEET = `# Product Brain \u2014 Agent Cheatsheet
|
|
|
16127
16127
|
## Core Tools (Serves 13 default compound tools; 3 more (chain, chain-review, map) behind PB_MODULES=gitchain)
|
|
16128
16128
|
| Tool | Purpose | Key params |
|
|
16129
16129
|
|---|---|---|
|
|
16130
|
-
| \`orient\` | Workspace context, governance, active
|
|
16130
|
+
| \`orient\` | Workspace context, governance, active work packages, session start | \`action\`: start, task, record-activation |
|
|
16131
16131
|
| \`capture\` | Create entry (draft), single or batch | \`collection\`, \`name\`, \`description\`, optional \`data\` / \`items[]\` |
|
|
16132
16132
|
| \`entries\` | List / get / batch / search / update / commit / history / move / verify | \`action\` + \`entryId\` / \`query\` / \`collection\` |
|
|
16133
16133
|
| \`relations\` | Create / batch-create / dismiss / delete / find / suggest links | \`action\` + \`from\`, \`to\`, \`type\` or \`entryId\` |
|
|
16134
16134
|
| \`context\` | Gather related knowledge, last-verified brief | \`action\` + \`entryId\` or \`task\` |
|
|
16135
16135
|
| \`collections\` | List / create / update collections, manage labels | \`action\` |
|
|
16136
|
-
| \`quality\` | Score an entry, verify the Chain, audit a
|
|
16136
|
+
| \`quality\` | Score an entry, verify the Chain, audit a work package | \`action\`: check, re-evaluate, verify-chain, audit |
|
|
16137
16137
|
| \`session\` | Start / close, wrapup, resume, constellation accept | \`action\`: start, close, status, wrapup-review, wrapup-commit, resume, commit-constellation |
|
|
16138
16138
|
| \`workflows\` | Run workflows, checkpoint, load a skill | \`action\`: list, start, checkpoint, get-run, load-skill |
|
|
16139
16139
|
| \`workspace\` | Check / whoami / status / self-test, usage, governance proposals | \`action\`: check, whoami, status, audit, self-test, usage, proposals-* |
|
|
@@ -16873,10 +16873,10 @@ var INSTRUCTIONS = [
|
|
|
16873
16873
|
"This builds trust \u2014 the Chain (main) is SSOT; nothing goes there without user consent.",
|
|
16874
16874
|
"",
|
|
16875
16875
|
"Alignment-first: before proposing or building anything, check orient's Workspace Governance",
|
|
16876
|
-
"and Active
|
|
16876
|
+
"and Active work packages sections. These are constraints, not reference material.",
|
|
16877
16877
|
"If the proposal conflicts with a principle, standard, or business rule \u2014 stop, flag the conflict,",
|
|
16878
16878
|
"and get explicit user confirmation before proceeding. Do not design around governance.",
|
|
16879
|
-
"If the work is outside the scope of active
|
|
16879
|
+
"If the work is outside the scope of active work packages \u2014 stop, name the gap, and ask the user",
|
|
16880
16880
|
"to confirm before designing. Do not propose implementation for out-of-scope work without a go-ahead.",
|
|
16881
16881
|
"",
|
|
16882
16882
|
"Workspace setup: use `collections action=create` and `collections action=update` to shape the workspace",
|
|
@@ -17048,4 +17048,4 @@ export {
|
|
|
17048
17048
|
createProductBrainServer,
|
|
17049
17049
|
initFeatureFlags
|
|
17050
17050
|
};
|
|
17051
|
-
//# sourceMappingURL=chunk-
|
|
17051
|
+
//# sourceMappingURL=chunk-3FK3GMB5.js.map
|