Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ website-bot.db-wal
# Generated launch-env / deploy-secret reports (per-run artifacts, not source)
validation/launch_env_report.json
validation/deploy_secrets_report.json
validation/validation_report.yaml
astro_template/validation/*.jsonl

# Test coverage artifacts (generated by c8/node --test, not source)
Expand Down Expand Up @@ -59,3 +60,11 @@ reports/test-runs/**/*.pem
reports/test-runs/**/*.key
reports/test-runs/**/*secret*
reports/test-runs/**/*credential*

# Non-npm lockfiles — this repo is npm-only (CI pins PACKAGE_MANAGER=npm and
# tracks package-lock.json). A stray lockfile from another package manager is
# container debris, and the l9-lint-test workflows' pnpm/yarn arms would treat
# it as load-bearing the moment PACKAGE_MANAGER changed.
pnpm-lock.yaml
yarn.lock
bun.lockb
166 changes: 156 additions & 10 deletions examples/quantum-ai-partners/domain_spec.normalized.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ routes:
- process
- faq
- final_cta
purpose: Position the company, route the three audience segments, show the layered services model, and capture email conversions.
template: homepage
priority: 1
- slug: /services
title: Services
components:
Expand All @@ -36,6 +39,9 @@ routes:
- process
- faq
- cta
purpose: Explain the three service lines and how they compose into one layered engagement.
template: services_page
priority: 2
- slug: /approach
title: Approach
components:
Expand All @@ -45,25 +51,37 @@ routes:
- stack
- faq
- cta
purpose: Explain the layered systems methodology — strategy, build, production hardening — with real depth, no hype.
template: approach_page
priority: 3
- slug: /about
title: About
components:
- hero
- positioning
- trust_bar
- cta
purpose: State who Quantum AI Partners is and what it stands for, without unverified credentials.
template: about_page
priority: 4
- slug: /faq
title: FAQ
components:
- hero
- faq
- cta
purpose: Answer cost, process, technology, security, and engagement questions.
template: faq_page
priority: 5
- slug: /contact
title: Contact
components:
- hero
- contact_options
- cta
purpose: Primary conversion page — email and intro-call path.
template: contact_page
priority: 6
seo_contract:
site_url: https://www.quantumaipartners.com
target_keywords:
Expand All @@ -83,10 +101,46 @@ seo_contract:
- AI consulting engagement model
- Quantum AI Partners
- AI consultancy Quantum AI Partners
route_targets:
- cluster_name: ai_consulting
target_page: /services
intent: service_provider
keywords:
- AI consulting
- AI consulting services
- AI consulting firm
- enterprise AI consulting
- cluster_name: ai_implementation
target_page: /approach
intent: service_provider
keywords:
- AI implementation
- LLM integration
- custom AI development
- AI agent development
- cluster_name: ai_strategy
target_page: /services
intent: service_provider
keywords:
- AI strategy
- AI adoption roadmap
- AI readiness assessment
- cluster_name: ai_faq
target_page: /faq
intent: informational
keywords:
- AI consulting FAQ
- how much does AI consulting cost
- AI consulting engagement model
- cluster_name: brand
target_page: /about
intent: informational
keywords:
- Quantum AI Partners
- AI consultancy Quantum AI Partners
metadata_rules:
title_pattern: "{Primary Keyword} | Quantum AI Partners"
description_pattern: Engineering-grade {Topic} for {Audience} — AI strategy,
custom systems, and production hardening without the hype.
description_pattern: Engineering-grade {Topic} for {Audience} — AI strategy, custom systems, and production hardening without the hype.
schema_rules:
- Organization
- ProfessionalService
Expand All @@ -108,6 +162,102 @@ seo_contract:
- thin_city_pages_before_national_strategy_is_approved
- guaranteed_outcome_claim_pages
wom_flags: []
business_facts:
legal_name: Quantum AI Partners
tagline: Engineering-grade AI systems for business.
brand_positioning: An AI consultancy and delivery partner for strategy, custom AI/LLM systems, and production hardening — engineering-first, without hype.
primary_value: Take organizations from AI intent to working, evaluated, production-grade systems through a layered systems discipline.
competitive_angle: Layered-systems AI engineering — strategy, build, and production hardening as one continuous discipline, expressed without hype.
core_offer: AI strategy, custom AI and LLM systems, and production hardening.
offer_type: service
pricing_visibility: engagement_based
deliverables:
- strategy_roadmap
- working_prototype
- production_system
- evaluation_suite
- knowledge_transfer
decision_makers:
- cto
- vp_engineering
- head_of_product
- founder
pain_points:
- llm_adoption_uncertainty
- integration_risk
- talent_gap
- evaluation_gaps
- cost_uncertainty
- ai_hype_fatigue
- data_privacy_concerns
trust_requirements:
- engineering_depth
- honest_scoping
- security_first
- no_hype_language
- clear_pricing_signals
service_area_model: remote_first
service_lines:
- AI Strategy & Roadmaps
- Custom AI & LLM Systems
- AI Modernization & MLOps
conversion_authority:
primary_action: Book an Intro Call
secondary_actions:
- Email Us
- Explore Services
cta_library:
- Book an Intro Call
- Email Us
- Explore Services
- See the Approach
content_guardrails:
forbidden_claims:
- agi_claims
- fake_benchmarks
- guaranteed_roi
- hallucination_free_guarantees
- invented_case_studies
- invented_client_names
- performance_guarantees
- trusted_by_claims
semantic_provenance:
source_spec_version: 1.0.0
compiler_version: 1.1.0
runtime_authority_paths:
- assets
- audience
- authority
- build_intent
- client_vision
- content
- conversion
- design
- design_references
- geography
- identity
- market
- offer
- seo
gate_paths:
- authority
- compliance
- design
- validation
provenance_paths:
- authority
- content
- deployment
- design
- experiments
- future_outputs
- geography
- identity
- integrations
- market
- metadata
- notes
- validation
assets:
generation:
enabled: true
Expand All @@ -117,12 +267,9 @@ assets:
build_intent: REDESIGN_IMPROVE
client_vision:
desired_outcomes:
- Position Quantum AI Partners as a distinctive, engineering-deep AI partner
— never a generic AI consultancy template.
- Convert visitors into intro-call and email inquiries through a clear,
low-friction path.
- Communicate layered-systems depth (strategy to build to production)
without hype.
- Position Quantum AI Partners as a distinctive, engineering-deep AI partner — never a generic AI consultancy template.
- Convert visitors into intro-call and email inquiries through a clear, low-friction path.
- Communicate layered-systems depth (strategy to build to production) without hype.
brand_attributes:
- distinctive
- graphically_rich
Expand Down Expand Up @@ -200,8 +347,7 @@ design_references:
negative: []
- reference_id: baseten
url: https://www.baseten.co/
selection_reason: "Client likes: cool graphics; shows layers; layers apply to L9
and Quantum AI Partners."
selection_reason: "Client likes: cool graphics; shows layers; layers apply to L9 and Quantum AI Partners."
evidence_refs:
- likes_dislikes_table_2026-09-01
principles:
Expand Down
4 changes: 2 additions & 2 deletions scripts/golden-safehaven/fixtures/build-fixtures.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,9 @@ writeJson(path.join(ASSETS, "redesign-integrity-receipt.json"), {
"release-receipt",
"seo-baseline",
"visual-qa",
"redesign-integrity-receipt",
"release-receipt-finalizer",
"handoff-emitter",
"redesign-integrity-receipt",
"terminal-convergence",
],
competitive_landscape: {
Expand Down Expand Up @@ -807,9 +807,9 @@ const STAGES = [
"release-receipt",
"seo-baseline",
"visual-qa",
"redesign-integrity-receipt",
"release-receipt-finalizer",
"handoff-emitter",
"redesign-integrity-receipt",
"terminal-convergence",
];
for (let i = 0; i < STAGES.length; i++) {
Expand Down
82 changes: 64 additions & 18 deletions scripts/normalize-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -376,31 +376,77 @@ function carryStructuredAssets(ds: any, flat: DomainSpec): void {
}
}

/**
* Every committed source -> normalized IR pair. The default gate used to cover
* only the first, so the second rotted silently the moment the v1.1 compiler
* began emitting route semantics: an artifact nothing verifies is an artifact
* that drifts. Both are checked and regenerated together.
*/
const COMMITTED_SPECS: ReadonlyArray<{ in: string; out: string }> = [
{
in: "examples/supplemental-insurance-pros/domain_spec.source.yaml",
out: "examples/supplemental-insurance-pros/domain_spec.normalized.yaml",
},
{
in: "examples/quantum-ai-partners/domain_spec.source.yaml",
out: "examples/quantum-ai-partners/domain_spec.normalized.yaml",
},
];

/**
* A source and its normalized output are one unit, so an override names either
* both sides or neither. Filling the missing half from a default let
* `--in <a client>` write over a DIFFERENT client's committed artifact while
* looking entirely deliberate; a one-sided flag now resolves only against a
* committed pair, and an unrecognised path is an error rather than a guess.
*/
function resolveTargets(inArg?: string, outArg?: string): ReadonlyArray<{ in: string; out: string }> {
if (inArg === undefined && outArg === undefined) return COMMITTED_SPECS;
if (inArg !== undefined && outArg !== undefined) return [{ in: inArg, out: outArg }];
const side = inArg !== undefined ? "in" : "out";
const value = (inArg ?? outArg) as string;
const matches = COMMITTED_SPECS.filter((pair) => pair[side] === value);
if (matches.length !== 1) {
throw new Error(
`--${side} ${value} does not identify exactly one committed spec pair ` +
`(${matches.length} matched). Pass both --in and --out, or name a committed ` +
`--${side} path: ${COMMITTED_SPECS.map((pair) => pair[side]).join(", ")}`,
);
}
return matches;
}

function main() {
const args = process.argv.slice(2);
const check = args.includes("--check");
const inPath = getArg(args, "--in") ?? "examples/supplemental-insurance-pros/domain_spec.source.yaml";
const outPath = getArg(args, "--out") ?? "examples/supplemental-insurance-pros/domain_spec.normalized.yaml";
const flat = buildFlatSpec(parse(readFileSync(inPath, "utf-8")));
validateDomainSpec(flat, `${inPath} (normalized)`);
if (check) {
const committed = parse(readFileSync(outPath, "utf-8"));
if (!deepEqual(flat, committed)) {
console.error(`normalize-spec --check FAILED: ${outPath} is stale.\nRegenerate with: tsx scripts/normalize-spec.ts`);
for (const key of Object.keys(flat)) {
if (!deepEqual((flat as any)[key], (committed as any)?.[key])) {
console.error(` first diff at key: ${key}`);
break;
const targets = resolveTargets(getArg(args, "--in"), getArg(args, "--out"));
for (const { in: inPath, out: outPath } of targets) {
const flat = buildFlatSpec(parse(readFileSync(inPath, "utf-8")));
validateDomainSpec(flat, `${inPath} (normalized)`);
if (check) {
const committed = parse(readFileSync(outPath, "utf-8"));
if (!deepEqual(flat, committed)) {
console.error(`normalize-spec --check FAILED: ${outPath} is stale.\nRegenerate with: tsx scripts/normalize-spec.ts`);
for (const key of Object.keys(flat)) {
if (!deepEqual((flat as any)[key], (committed as any)?.[key])) {
console.error(` first diff at key: ${key}`);
break;
}
}
process.exit(1);
}
process.exit(1);
console.log(`normalize-spec --check OK: ${outPath} matches normalize(${inPath}).`);
continue;
}
console.log(`normalize-spec --check OK: ${outPath} matches normalize(${inPath}).`);
return;
mkdirSync(dirname(outPath), { recursive: true });
// lineWidth: 0 disables folding. The committed artifacts were generated
// unfolded while the writer kept the yaml package's 80-column default, so
// without this pin a regeneration rewraps an in-sync file by +76 bytes and
// the gate stays green through the churn — it compares parsed objects, not
// bytes.
writeFileSync(outPath, stringify(flat, { lineWidth: 0 }), "utf-8");
console.log(`Wrote ${outPath} from ${inPath}.`);
}
mkdirSync(dirname(outPath), { recursive: true });
writeFileSync(outPath, stringify(flat), "utf-8");
console.log(`Wrote ${outPath} from ${inPath}.`);
}

/**
Expand Down
5 changes: 5 additions & 0 deletions src/inngest/website-pipeline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,11 @@ export const websitePipeline = inngest.createFunction(
mode,
specPath: data.specPath,
provision: shouldProvision,
// Without this the plan builder always saw buildIntent undefined, so a
// REDESIGN_IMPROVE spec ran the COPY topology on the durable path: no
// preflight, no competitive intelligence, no redesign authority chain,
// and no redesign-integrity-receipt gate at all.
buildIntent: ctx.buildIntent,
});

compensation.register("release-evidence", async () => {
Expand Down
Loading
Loading