Skip to main content

Solutions

A solution record defines the mechanism used to address one or more problems — how the workflow or the decision changes. It is not a feature list, a benefit, or a pitch.

Its central job is to separate what the product actually delivers from what it delivers conditionally, through integration, on a roadmap, or not at all.

No vertical scope

A solution declares no vertical_ids. It is reached through the chain, never declared into scope:

audience.problem_ids[] → problem.solutionsIds[] → solution.proofIds[] → proof

An audience decides which problems apply to it; each problem carries the solutions that address it. A solution is therefore in scope for exactly the audiences that reach it. Where a mechanism genuinely depends on one vertical's process physics, that belongs in a capability condition or in limitations — never in a scope list.

Proof is the one record in the chain that stays vertical-scoped, because a result was observed somewhere specific.

The problem owns the reference

The problem's ordered solutionsIds array holds the link. A solution never carries a reverse pointer back to its problem. Resolve the relationship by traversing the owning array.

Capability classification

Every capability carries a capability_classification. An unclassified capability fails validation and blocks generation.

ValueMeans
nativeShipped and delivered by the product as it stands
configuredDelivered, but requires setup whose effort may not be knowable in advance
integratedDelivered through a connection to another system
roadmapNot available. Never describe it in language implying it is
unavailableNot delivered. Disclose it if asked

Two rules that cause most rejected records:

  • A commercial term is not a capability. Pricing, licence cost, free changes, and guarantees are not capabilities entries.
  • limitations and prohibited_claims are required work. A solution listing no limitation has not been thought through.

Naming

One solution per file, named for its immutable ID: S_00001.md.

Current records

IDMechanismAddressesProofStatus
S_00001Editable rule set in place of hand-written codeP_00001nonedraft
S_00003Quoting bound to the production scheduleP_00003nonedraft
S_00002One operating record with the ledger synchronizedP_00002nonedraft
S_00004One project identity across channel quotesP_00004nonedraft
S_00005Generated work-center allocation and schedule reflowP_00006nonedraft
S_00006Request text converted into a reviewed quote draftP_00007nonedraft
S_00007Targeted schedule edits with explicit reflowP_00008nonedraft
S_00008Reviewed document takeoff into structured opportunitiesP_00009nonedraft
S_00009Management views over the live operating recordP_00010nonedraft
S_00010Cycle-count reconciliation through posted inventory adjustmentsP_00011nonedraft
S_00011Reconciled trial migration before cutoverP_00012nonedraft

None is generation-ready. All eleven carry proofIds: []. The first three rest on seller statements recorded in inbox/, while S_00004 through S_00011 rest on deployment-specific MCP observations and inferences that have not yet been promoted into canonical product evidence through W9.

Authoring

W6 in the authoring workflows, or the create-solutions rule in .agents/rules/ for the interactive path from raw content.

A solution needs a resolving problem ID before anything else happens. A problem name, a description, or an audience file is never a substitute.