id: SC-0001
version: 1.3.0
descriptive
concept: Active Customer
owner: Revenue Operations
steward: J. Alvarez
review_cadence: quarterly
summary: >
A customer is counted as active when the account is
standard, closed-won, and has measurable activity in
either ERP or Support inside the stated windows.
systemic
sources:
- crm.accounts
- erp.invoices
- support.tickets
inclusions:
- crm.accounts.status: closed_won
- crm.accounts.type: standard
boundaries:
- erp.invoices.activity_within: 24 months
- support.tickets.activity_within: 12 months
transformations:
- join accounts -> invoices on account_id
- join accounts -> tickets on account_id
- active = erp_active OR support_active Semantic Control
Govern meaning.
Constrain systems.
The concept on your report isn’t what the business says it means. It’s how the system described it. Every Active Customer, every On Hold, every Qualified Lead. The working definition is bound by the fields and values that produced the presentation. Change the system, change the concept.
That’s not a data quality problem. It’s structural.
Semantic Control treats it as structural. One concept at a time, a Meaning Contract documents what the data already is. Its sources, its inclusions and exclusions, its boundaries and transformations. The ‘intent’ side of the data is captured as well. The meaning, the description, the owners and stewards. A Boundary is compiled from the contract and enforces it. The report points at the Boundary. The contract lives in Git.
Meaning before data.
Intent before facts.
Direction
Report to Source.
A Meaning Contract starts at the presentation layer. The report, the dashboard, the import tool your analyst uses. Wherever the concept is consumed by a human or a downstream system to make a decision.
From there, the work walks backward. Through whatever view, aggregate, or transformation feeds the presentation. Back to the source systems. Every filter, every join, every exclusion, every window gets named on the way. That list becomes the systemic side of the contract.
Why this direction.
Because the presentation layer is where the concept informs decisions. Someone wrote the SQL. Someone picked the status values. Someone set the activity window. The definition is in production right now, producing the presentation that gets trusted. It isn’t missing. It’s implicit. The work is making it explicit.
Source first is the other direction, and it never terminates. Start at the source and the question becomes “what does Customer mean” in the abstract. That question has no owner, no deadline, and no forcing function. It produces committees. It does not produce contracts. And while the committee debates, the drift compounds. Every COUNTIF in Excel for the next PowerPoint is another transformation nobody documented.
Report first has a natural terminator. When the walk reaches source and every constraint is named, the systemic side of the contract is done. Draft a pull request. Engineers review. Merge.
A few things follow.
Different teams read the same source differently. Marketing’s Customer report and Finance’s Customer report each walk back along their own paths. Sometimes the same sources, sometimes different, sometimes a mix. Both walks terminate. Both produce contracts. That isn’t a conflict to resolve. It’s two contracts to write. Both are legitimate. Both get documented. The architecture accepts that an organization uses its systems in more than one way.
Business sign-off is not what produces a contract. The walk produces the contract. Business involvement happens on the descriptive side, which the business authors at its own pace, and at approval of the pull request. Neither of those activities is defining meaning from scratch in a conference room during a Governance working session.
If a data governance council exists, its job changes. Not arbitrating what Customer means, because the stack already decided that. Endorsing what the walk produced, and in the rare cases where it matters, deciding which of two valid contracts gets promoted to the enterprise default. Fewer conversations. Shorter conversations. Closeable conversations.
Artifact
The Contract.
A Meaning Contract is a document. Human and machine readable.
It has three blocks.
The id block carries the contract number, and the version. Nothing more.
The descriptive block shows how the organization uses the concept. What it means, who owns it, who stewards it, how often it gets reviewed. The department with ownership or responsibility authors this. It grows at business pace. Context deepens. Examples get added. Edge cases get documented. An engineer is involved at exactly one point: approving the pull request.
The systemic block names what the stack does. Sources, inclusions, exclusions, boundaries, transformations. Every constraint that applies from source to presentation. Engineers author this, informed by the walk. The systemic block is what compiles.
Three blocks. Two authors with their own cadences. One artifact.
Active Customer is a closed-won standard account with activity in ERP within 24 months or Support within 12 months.
- inclusions.status
- closed-won
- inclusions.type
- standard
- boundaries.erp.activity_within
- 24 months
- boundaries.support.activity_within
- 12 months
- transformations.active
- ERP active OR Support active
The contract isn’t a reference. It’s operative. The Boundary is compiled from it. Change the systemic block, recompile, the Boundary changes. The document and the source of truth for the enforcement layer are the same thing.
The contract lives in Git with all the benefits and discipline that brings.
That’s governance in Semantic Control. Version history. Pull requests. Engineer reviewers. Audit trail. Rollback. These are Git features. They are also what governance is supposed to mean. Traditional data governance drifted into committees and policy documents nobody reads. SC’s governance is the Git log.
Every governed output carries the contract reference as metadata. Contract ID. Version. Timestamp. Every number a governed report produces has a receipt. If someone asks what rules produced this, the answer is the contract at that version. Not the analyst who built the report. Not the SQL in a dashboard. The contract.
Version matters because contracts change. Perspectives need refinement through business decisions and technical changes. A number that was 51 last quarter and 48 this quarter: did the reality change, or did the rules change? Without version, there’s an offline meeting to figure out which. With version, you read the metadata.
Enforcement
The Boundary.
A Boundary is compiled enforcement of the systemic part of a contract.
It’s not hand-written SQL nor a dashboard filter some analyst maintains. The Boundary is the complete pipeline from report to source, translated into code that runs. Change the contract, recompile, the Boundary changes. The contract is the source. The Boundary is the result. They are intertwined, and get applied together somewhere in the stack.
The Rosetta Stone between intent and enforcement.
-
01 At consumption
Filter or view in front of reports.
- Source
- Transform
- Boundary
- Presentation
Governs reads at the presentation layer. Numbers that violate the contract never appear.
-
02 Between systems
Semantic API as the edge.
- Source
- Boundary
- Transform
- Presentation
Governs cross-system reads. Downstream queries the API; the contract id rides the request.
-
03 At write-time
Enforcement at the source.
- Boundary
- Source
- Transform
- Presentation
Governs writes. Source systems cannot record data that contradicts the contract.
At the consumption layer.
Applied at the consumption layer, the Boundary is a filter or a view. Reporting data passes through it before reaching the report. Every number the report shows was produced by the contract. Numbers that would violate the contract don’t appear. This is the simplest place to stand up a Boundary, and proves the pattern.
Between systems.
If inserted between systems, the Boundary could be a semantic API. Downstream systems would query the API for contract-governed data. They’d stop reading raw tables. The contract ID becomes part of the request. Any system that wants governed data goes through this path. Any system that wants ungoverned data continues reading raw tables, and its outputs carry no contract reference.
At write-time.
At write-time, the Boundary could be enforcement at the source. Writes that would violate the contract are rejected. Source systems cannot produce data that contradicts what the contract says should be there. This would be an advanced iteration of the architecture.
Where it lives.
Where the Boundary lives is untested. The theory is that it is inserted where enforcement belongs. I believe that the further left in the stack it is inserted, the greater the opportunities. But that’s also an iterative decision. You can start at the reporting layer, and everything you build, from the Git repo to the boundary, goes to the next injection point. Iteration to unlock new features.
Operational spine
The Loop.
One concept is the unit of work. Not a domain, department, capability, or model. Active Customer. Qualified Lead. On Hold. Walk it back to a finite set of sources. Choose a high-pain or high-risk concept. A number causing tension on a monthly cadence. A metric leadership doesn’t fully trust. A report two teams read differently. Somewhere the drift is already a problem. The first contract earns its cost by documenting a pain that was already costing the organization.
The loop has six stages.
- Pick. One concept. Named. Bounded by a specific presentation.
- Walk. Report to source. Collect the boundaries. The inclusions, exclusions, timeframes, joins, and transformations. Take only one branch if it’s complicated.
- Write. The Meaning Contract. Three blocks. Id assigned. Descriptive block drafted by the department with ownership, or the labels on the report if ownership isn’t named. Systemic block written from the walk. Pull request opened.
- Compile. The Boundary. Translate the systemic block. Provide the proper language to the system where enforcement will happen, which for a first concept usually means the consumption layer.
- Wire. The report sources from the Boundary. Controlled output carries the contract reference as metadata. The report is now traceable to a contract at a specific version.
- Iterate. Another concept. Or deeper descriptive context on the current one. Both are iteration. Both add value.
- 01
Pick.
One concept. Bounded.
BSS - 02
Walk.
Report to source. Collect the boundaries.
BSS + Engineering - 03
Write.
The Meaning Contract. Pull request.
Business + Engineering - 04
Compile.
The Boundary. Translate the systemic block.
Engineering - 05
Wire.
Report sources the Boundary. Metadata on the output.
Engineering - 06
Iterate.
Another concept. Or deeper context.
BSS
SDLC levels of control and iteration for meaning with clear delineations of labor and responsibilities. Independent of each other, unlocking asynchronous collaboration between the teams that make decisions on data, and the people that provide it to them.
Division of labor.
BSS Advisors leads the way. Ensures what is contained in the pipeline is documented. The department with ownership authors the descriptive block. What the concept means to them. Who owns it. How it gets stewarded. This is business work, not engineering work.
Engineers review the systemic block for technical accuracy and approve the pull request. Engineers compile the Boundary and wire the report.
BSS ensures the architecture is followed. The contract matches the walk and maintains structure. The Boundary matches the contract. The metadata on the output traces back correctly.
Why it compounds.
Value compounds across iterations. The first concept requires building the Git repo, the review process, the compilation pipeline, the metadata convention, and any lessons learned. The second concept uses all of it. The third concept adds to it. The infrastructure is a one-time cost. The contracts are the recurring work, and each contract becomes easier because the surrounding machinery already exists.
The same is true at the descriptive layer. A contract’s descriptive block keeps growing at business pace long after the systemic block has stabilized. New context, new decisions, and business changes result in a pull request. Each pull request is small. None of them require engineering cycles beyond approval.
Iteration isn’t “do it again harder.” Iteration is “add the next node to a graph that already exists.” The graph gets denser over time. The organization’s meaning becomes legible one contract at a time.
Additive architecture
Coexistence.
Semantic Control is additive architecture with no new software or hardware. It attaches in parallel and controls more with each iteration. The existing stack continues to run, existing reports continue to render, and analysts who have never heard of a Meaning Contract continue to do their work. The architecture doesn’t require anything to be fixed before the first contract ships. It doesn’t require anything to be migrated. It doesn’t require anything to be deprecated.
It surfaces the way systems are used across the enterprise. The same field in the same system can be used differently. Ops and their support team both care about a record’s status being On Hold. Same meaning. But Ops wants those records excluded from their throughput numbers because they’re not active work anymore. Ops support wants those same records included in their queue because that’s what they’re processing. Two contracts. Both valid. Both drafted from the same field. Neither contract changes the field. Neither contract invalidates the other. The architecture accepts that a field can carry more than one legitimate interpretation, and it documents both.
Ops Throughput
owner: Operations
On-Hold records are not active work. Exclude from throughput.
Ops Support Queue
owner: Ops Support
On-Hold records are the queue. Include in queue volume.
Sometimes the documenting surfaces that two teams have been reading the same field differently for years, each producing reports that are correct for their purpose. The contracts put that in writing. Both are recognized. Both are trusted. The disagreement stops being a recurring meeting and becomes a permanent decision documented in code.
Sometimes the documenting surfaces a gap. A team has been quietly excluding records their leadership didn’t know they were excluding. The contract puts it in writing. Leadership reads it. The conversation that follows might endorse what the team was doing, or it might say “we were never supposed to exclude those.” Either outcome is legitimate. The architecture doesn’t decide which. It makes the conversation possible by making the practice visible.
The early contracts ship without anyone noticing. Control grows one contract at a time, alongside everything that was already there. Nothing is rebuilt. Nothing is replaced. The stack absorbs the architecture rather than being reshaped by it.
Property
Self-Reporting.
Semantic Control is self reporting. Every contract lives in a Git repo with its full history, with the companion Boundary having a query log. That means the questions organizations usually have to answer with a rollout plan are already answered by the artifacts. Who is using this is answered with the Boundary query log. Every system that reads through the Boundary is on the list. The list is the usage report.
The list of contracts in the repo lists what has been controlled thus far. All with versions and keys that travel with the data. All changes and questions become traceable and auditable. Ones without this become identifiable. None of this requires an additional mechanic to maintain.
This is why Semantic Control is a stand alone architecture. It does not depend on process requiring enforcement. It can surface business disagreement, confusion, and whether the numbers on a report can be trusted.
Monday morning
Payoffs.
-
One number you can defend.
Every controlled figure carries a contract reference and a version. When a board member asks where a number came from, the answer is a contract ID, not a research assignment. The rules that produced the figure are legible, versioned, and owned by name. And the business intent comes along with it.
-
Every exclusion comes with a reason.
Ask three systems whether Northgate Retail Group is an active customer and you’ll get three answers. CRM says no, the contract was terminated. ERP says no. Northgate missed the last-invoice window and fell off the active list, but collections is still billing them $7,800. Support says yes because they have an open ticket fourteen months old (which is why the invoice went unpaid). All three are correct for what each system measures. None of them is the answer to the question leadership asked.
Under a Meaning Contract, the question resolves once, under one rule set. Northgate is in or out, and the contract says why. Anyone downstream understands. The three-answer reconciliation meeting doesn’t happen, because the reconciliation happened in the contract.
-
Change the contract, controlled reports reflect it.
Update a contract, the Boundary recompiles, and every controlled report that sources from it is up to date. That’s the architecture working visibly, without a rollout plan or a migration project. Each contract becomes easier and adds to the whole.
The first contract pays for the Git repo, the review process, the compilation pipeline, and the metadata convention. The second contract uses all of it. By the tenth, the architecture is infrastructure, not overhead. Cost goes down as coverage goes up.
Contact
About.
Joe Michie Advisors LLC.
- Email joe@bssadvisors.com
- LinkedIn linkedin.com/in/joemichie