OSS-first docs

These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.

app_config.draft_created

A new tenant config draft was created.

  • Type: event (event)
  • Version: 1.0.0
  • File: packages/libs/contracts-spec/src/app-config/events.ts
  • ```typescript

    import { ScalarTypeEnum, SchemaModel } from '@lssm-tech/lib.schema';

    field.key.label
    app_config.draft_created
    field.version.label
    1.0.0
    field.type.label
    event (event)
    field.title.label
    app_config.draft_created
    field.description.label

    A new tenant config draft was created.

  • Type: event (event)
  • Version: 1.0.0
  • File: packages/libs/contracts-spec/src/app-config/events.ts
  • ```typescript

    import { ScalarTypeEnum, SchemaModel } from '@lssm-tech/lib.schema';

    field.tags.label
    field.owners.label
    field.stability.label

    A new tenant config draft was created.

    Source Definition

    import { ScalarTypeEnum, SchemaModel } from '@lssm-tech/lib.schema';
    import { defineEvent } from '../events';
    import { OwnersEnum, StabilityEnum, TagsEnum } from '../ownership';
    
    export const ConfigDraftCreatedEvent = defineEvent({
    	meta: {
    		...lifecycleOwnership,
    		key: 'app_config.draft_created',
    		version: '1.0.0',
    		description: 'A new tenant config draft was created.',
    	},
    	payload: new SchemaModel({
    		name: 'ConfigDraftCreatedPayload',
    		fields: {
    			tenantId: { type: ScalarTypeEnum.ID(), isOptional: false },
    			appId: { type: ScalarTypeEnum.ID(), isOptional: false },
    			version: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
    			blueprintName: {
    				type: ScalarTypeEnum.String_unsecure(),
    				isOptional: false,
    			},
    			blueprintVersion: {
    				type: ScalarTypeEnum.String_unsecure(),
    				isOptional: false,
    			},
    			createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },
    			clonedFrom: { type: ScalarTypeEnum.Int_unsecure(), isOptional: true },
    		},
    	}),
    });