Network Access Platform
SmartProject proved the shape: a live BharatNet PMO that is, underneath, a generic engine in a fiber skin. We paid to hand-build it once, for one vertical. This is the platform that builds the next one — and every one after — from configuration. An ontology, a workflow, gates, screens, rollups: declare them, and a SmartProject-class program appears.
The configurator authors a program bundle. The platform instantiates a whole multi-actor system from it — and changing the program means editing the document, not shipping code.
We are not inventing these. We are naming and re-factoring a pattern that already exists across SmartProject, the SMP engine, and FiberSure.
Entities, typed traits (type · unit · enum · control), links, spatial containment, parties.
Task-type DAGs · 5 node kinds incl. SCREEN · status state-machine · typed ports · offline sub-flows.
Module × role × verb · status→role→order approval chains · scope predicates (action-on-me, partner, geo).
Web grids/inbox/forms + phone capture screens from one schema · shared renderer state online/offline.
Every metric = an aggregation over the ontology, declared in config. No bespoke reports.
SSO across facets · telemetry as event streams · doc stores · MCP/OpenAPI nodes · agents.
# program.bundle — versioned, content-hashed, tenant-scoped ontology: # entity types + typed traits + containment node: { tree: State›District›Block›GP } traits: [ rkm:number/KM, class:enum(Green,Brown) ] lifecycle: [ Scope, HOTO, Plan, Survey, Build, Ops ] workflows: Construction: statuses: [ Pending*, YTS, WIP, Invoiceable ] nodes: [ SCREEN, HUMAN_TASK, ASYNC ] offlineCapable: true gating: approval: Construction › WIP › role=ZM › order=2 modules: { Task: [read,write,edit] } screens: [ survey.capture, approve.modal ] rollups: SUM(rkm_completed) by stage, geo integrations: [ hdd.telemetry, sharepoint, sso ] theme: vinxi
DRAFT → PUBLISHED → DEPRECATED, content-hashed so a device knows exactly which
bytes it cached — no phantom "update available" loop.
Traits and screen payloads carry real Kernel types, validated at publish time by an edge
checker — not $node[...] string lookups that fail at runtime.
SmartProject/NCC must be expressible as one of these bundles with zero bespoke code, reproducing the live behaviour we captured. If it can't, the layer isn't generic enough yet.
Move a gate, add a trait, retune a rollup — published, not deployed.
The decisive, expensive bet: a single definition, two execution profiles, one renderer state — so a crew works a sub-flow fully disconnected and syncs back clean.
Generality isn't a claim — it's a test. Re-derive the fiber program we reverse-engineered, then stand up a wholly different one from the same engine and a different bundle.
A project authored as a document, instantiating a live entity tree.
A task moving Pending→AM→ZM→QC→PH with a real audit trail.
SmartProject's dashboard + task list, regenerated from config.
A crew capturing offline, syncing clean. The expensive bet.
Fiber + a non-fiber program, zero vertical code. The proof.
Telemetry, MCP nodes, SSO, secret-safe, multi-tenant.
Each epic declares: what the CEO sees · what presales demos · what's production-deliverable · what it de-risks.