tom_specs_model 1.6.13
tom_specs_model: ^1.6.13 copied to clipboard
Typed Dart data model for all TomSpecs specification documents — the source of truth the SOM generator derives the nine language runtimes from.
1.6.13 #
- Documentation: SOM §9 names the instance-tier
missingRequiredFieldcheck; the model is unchanged. - This file now carries the entries for 1.6.5 to 1.6.12, which those releases shipped without.
1.6.12 #
- Fields a pre-release, gate-driven plan cannot state are optional
(
tom_specs_model_rules.md§6.2.7): target dates of business goals and goal milestones; planned dates of stages, stage summaries and migration phases, and a stage's go-live date; everyminVersion/minimumVersion; current active users and current data volume. Their hints accept a gate or a version policy and say empty means not yet known. - The existing-system compatibility list (
LCE-LEGA-LST) is described for predecessors and systems running beside the solution; audit-date hints allow "none yet" and a gate.
1.6.11 #
ScheduledJobTrigger.intervalwith theSCJOB-INTVcase (ISO 8601 period, optional anchor), mirroringCsJobTrigger.interval(tom_code_specs0.16.0).
1.6.10 #
- Members the domain needed: a RACI matrix (
RACIEN) and policy ownership (POLOWN); operation controls (SVOCT); bounded-context owned operations and relationships (CTXREL); a database connection budget (SRSDB); key management (KEYMGT); application-node and database-server counts; an attribute's OpenID release (USOIDC); a role's membership source; a locale variant's review status; test levels (TSLVL); maintenance procedures as headlined entries (MAPRO, idsMAPRO-PROC-…replacingSO-MAIN-…). - Not modelled, with reasons in
tom_specs_model_rules.md§6.2.6.
1.6.9 #
- One home per fact (
tom_specs_model_rules.md§6.2.5): places that held a copy of a fact refer to its home (keyRiskRef,migrationRiskRef,userCategoryRef,stakeholderRefs,libraryRef,componentRef,protocolComplianceRef,environmentRef,browserRef/osRef/platformRef,standardRef,alertRuleRef,SDR-DECI-REF,SYARSP-DECI-REF); data-protection classification levels and a migration phase's stage resolve. The MoSCoW analysis's tier and stage and the feature-stage matrix's stages are removed.
1.6.8 #
- Enum-like free text is typed: new enums
AlertSeverity,ConstraintEnforcement,OverridableBy,ConfigValueType,DecisionState; alert, maintenance, role-rule, configuration, quality, process-exception, pipeline-timeout and network-flag fields use them (orImportanceBand,Probability,Impact,Iso25010Characteristic,int).
1.6.7 #
- Counts and derived values are checked:
countOfon the success-criteria summary, use-case step and extension counts (./scope), the must-pass count and the feature-dependency totals (crossStageDependencybecame aboolwithcrossStageNote);productOfon six risk scores andrankOfon the key-risk ranking. Requirestom_specs_core0.3.0.
1.6.6 #
- References accept the registries the domain needs (
protocolErrorCodes, wider risk targets,proposedEnum,failureAlert, wider prototype-feature and field-help targets).
1.6.5 #
- The access-handler catalogue (
AZHAN); a custom authorization requirement names its handler from it.
1.6.4 #
- Links to the right registry (tom_uam findings): IOE gains
serverOperation(SVOPE.operationName) beside the exposedoperationId; the function-to-data matrix entry gainsfunctionRef(FUNCT) and itsentityNameresolves (DAENT.entityName); DAATT-SECUsensitivityLevelnames a data classification (DCLSE); a module'sowningContextnames bounded contexts (BCE.contextName, empty for a platform module); a component gainslibraryRefto its framework or library (FRREEN/THPALI); a component risk may name several components; FAMREFcomponentIdnames a UI component (UICOM, notCMPNT); a screen gainsserverOperations, a reportexportOperationanddisplayScreen(SCREN); a report filter'sentityTypenames an entity; a quality weight'squalityCategorynames its category (QCATE). A wrong value is adanglingReferencein every runtime.
1.6.3 #
- SCCO
relatedInteractionsresolves against the interactions (INEN). Fields that hold prose rather than ids now say so in their hints instead of promisingBR-xxx/INT-xxx/ISC-xxxids: the use-case rule lists (validation, calculation, authorization, workflow, notification, integration), MNSSTbusinessRuleApplied, INTRrelatedUseCase(ids of the Interaction Scenarios document) andearliestPossibleStage. - Cross-references that were plain text resolve:
refersToon PICLSparentProcess(BPREN), PCRLTsourceProcess/targetProcess(BPRENorCUBIPR), INIDprocessReferenceand INTRrelatedProcess(BPREN), INTRrelatedDataEntities(DAENT.entityName),relatedBusinessObjects(BJOEN),relatedBusinessRules(BIRU),relatedIntegrations(EIE), SSECinteractionReference(INEN), TMEDdependsOnPhases(TRPHE) anddependsOnMilestones(TRMIL), TESCBUbusinessProcessRef(BPREN), TESCTRacceptanceCriterionRef(DACEN), and everytargetStage/fallbackStage(STAGE). A wrong id is adanglingReferencein every runtime. The feature priority register'stargetStageis no longer required: a feature planned into no stage (Won't this time) leaves it empty. - The remaining nine
@Referencesections hold a resolvable id too:KEATT-REFE-REF,ENRLE-SOUR-REF,ENRLE-TARG-REFandDAENRE-RELA-REF(data entity,DAENT),BIRURE-RULE-REF(business rule,BIRU),AFOB-OBJE-REF(business object,BJOEN),AFFN-FUNC-REF(function,FUNCT),RQDEP-RELA-REF(requirement:FRE,TERQ,SECRQorORRQ) andRQTSC-RELA-REF(acceptance criterion,ACE) each have a one-field formrefwhose field declaresrefersToits registries. Every@Referenceof the model now has that shape; a document that wrote the id as the section's text moves it intoref.
1.6.2 #
- Reference sections hold a resolvable id.
EXSDE-PRIM-REF,SYDE-SOUR-REF,SYDE-TARG-REF,SYIN-SOUR-REF,SYIN-TARG-REF,PME-PROC-REF,SYTS-RELA-REFandGOLDE-RELA-REFareDocSpecsSectionmembers with a one-field formref;WAE-PART-REFhasrefs(comma-separated ids). Each field declaresrefersToits registry (ESENT,CUBIPR,INEN,BGE,WSE—.@sectionId), so every runtime's instance tier resolves the id and reports a wrong one asdanglingReference. Before, the typed ones expanded to the whole target class and the others held free text. A document that wrote the id as a form preamble or a plain value moves it intoref(tom_specs_model_rules.md§6.1, ref).
1.6.1 #
- Code-valued form fields:
patternRegexandconstraintExpression(DATAA), the text-inputpattern,transformationExpressionand bothruleExpressionfields declarecode: true. The markdown rendition writes their single-line values as inline code spans, so a regex's](stays literal instead of becoming a link (som_multiplatform_spec_model.md§11.4 rule 8,tom_specs_model_rules.md§6.2.3). A stored value is the bare code: a document that wrapped a pattern in backticks by hand should drop them. Requirestom_specs_core0.2.3 (Field.code).
1.6.0 #
- Protocol bindings: a
ServerOperationEntryhas abindingslist ofOperationBindingEntry(SVOBI) — the HTTP method, path template, version prefix, success status, response headers, content types and error format a third-party caller reaches the operation under — each with aparameterslist ofBindingParameterEntry(SVOBP). The operation's own contract is unchanged. EnumsBindingHttpMethod,BindingParameterSourceandBindingErrorFormat. - Framework protocol features: the server operation registry has a
protocolFeatureslist ofProtocolFeatureEntry(PROTF, enumProtocolFeatureKind: an OIDC authorization server, a SCIM 2.0 server), each with thehooksthe system implements (FeatureHookEntry,FEHOK) and, per hook, what each contract member does (HookMethodEntry,FEHOM: the operations it calls in order, the entities it reads and writes). codespecs_prompt.mdgains the A4 rows and A5 carriers for both, and the Stage-B rule for a hook whose tom_core contract does not exist yet.tom_specs_project_flow.mdG4 gains three criteria (bindings resolve, hooks complete, no protocol endpoint re-declared).- The generic gate checklists G1 and G2 (
doc/gate_checklists/) and their authority,doc/tom_specs_gate_checklists.md.
1.5.0 #
- Document-breaking: two section ids are renamed, because the old ones
collided with a list's item pattern and no document could carry them validly:
CurrentWorkflowEntry's diagram isCUWF-DIAG(wasCUWF-WORK), andErrorRecovery's mechanisms form isERRE-MECH(wasERRE-RECO). A document written against 1.4.x that uses either section must rename the key (YAML) or heading id (markdown). - Two additive CodeSpecs carriers: the
ActionTriggerKindenum withtriggerKindonScreenElementActionandComponentActionEntry, andbodyMessageKey(refersToa message key) onNotificationTypeEntry. - SOM text: §11.5 (a pattern-list item's heading id is stored on import), §11.6 (a form-only section's prose is the form's preamble), §12.1 (an absent review pass decodes as null), §12.3 rule 4 (an empty document keeps its root key), §12.5 (one review-scalar rule) and §14 (DocSpecs findings carry their document path).
codespecs_prompt.md: the extractor refuses a@CodeSpecsProjectionroot (§5), and the gate record carries an insufficient area's gap lines (§6.3).tom_specs_model_meta_schema.md: the meta'smodelHash.
1.4.1 #
- Test-only.
test/real_model_round_trip_test.dartasserted the reachable model's text-section and form counts as they were before a class-level@Formmade itscontenta form (637 and 303, not 707 and 233). 1.4.0 shipped the stale counts, so its archive's own test failed.
1.4.0 #
-
SOM §9 documents moving a list item.
-
The Solution Blueprint's stated counts are declared with
countOfand checked against the lists they describe: the scale form (SYSCL) counts user categories, external interfaces, functional and non-functional (technical + security) requirements; the requirement summary forms (FR-SUMM,TR1-SUMM,SR1-SUMM,OR-SUMM) their totals and priority buckets.tom_specs_model_rules.md§6.2.2 states the rule. -
SOM §12.9 documents assembling a document from fragments.
-
The area catalogue carries the Stage-A gate tables (
gate.requiredArguments,gate.carriers), andcodespecs_prompt.md§4.4/§4.5 pin A4 and A5 mechanically: the rule, the 25-row required-argument table and the 26-row carrier table. -
generated-doc/codespecs/codespecs_areas.json(and the embedded accessorlib/codespecs_areas.dart) carries the 31 authoring steps ofcodespecs_mapping.md§4.4.6.
1.3.3 #
- An enumerated column's documentation now names the annotated field's Dart type
as the column's value type, matching
tom_core_server'sTomDbColumn, which no longer takes type parameters. Documentation of the model, carried into all nine language packages through the meta. - The documentation moves with the CodeSpecs mapping and derivation contract to
tom_core_codespecs; twelve of the fourteen subject-matter documents remain indoc/.doc/also gains the conformance driver'seditorstep and the documentation-generator provisioning (pdoc on Python 3.13 or newer). - Test files formatted with the SDK formatter. No behaviour changes.
1.3.2 #
- The shipped tests run from the published archive. Three test groups read
the generated
tom_som_dart_v0/meta/spec_model.meta.json, which is a workspace sibling: present in a checkout, absent in a hosted install of this package. They threwPathNotFoundExceptionthere, so a consumer runningdart teston what pub.dev carries saw seven crashes and no explanation. They now skip with the reason stated. - The path was assembled from
Directory.currentrather than written as a literal, which is why the lexical shipped-path gate could not see it. Found bytom_specs_clitool/tool/verify_published_tests.sh, which downloads the published archive and runs its tests against hosted dependencies. - Tests only; no library change.
1.3.1 #
- Dependency constraints corrected, and this is a real fix rather than
housekeeping. 1.3.0 shipped with
tom_specs_core: ^0.1.0while depending on annotations that package only gained in 0.2.0 — so the published 1.3.0 resolved against atom_specs_coreit could not compile against. The constraint is now^0.2.0, andtom_som_dart_runtimemoves to^1.3.0. - Carries the
lib/codespecs_areas.dartCHANGELOG entry and thesom_multiplatform_spec_model.md§10.3 rewrite that landed after 1.3.0 was uploaded. - No model change: the object model, the emitted metadata and the schemas are byte-identical to 1.3.0.
1.3.0 #
lib/codespecs_areas.dart— the CodeSpecs area catalogue as Dart.somCodeSpecsAreasparses the 27-area catalogue on first use; the embeddedsomCodeSpecsAreasJsonis the exact text of the shippedgenerated-doc/codespecs/codespecs_areas.json, which stays as the interchange artifact the eight non-Dart runtimes read. Its own library and not part of the barrel — a catalogue of CodeSpecs areas is not part of the object model. Generated bytom_specs_clitool/bin/codespecs_areas.dartin the same pass that writes the JSON, so the two cannot disagree.ImportanceBand— the four-band qualitative scale gets a type.critical/high/medium/lowwas the model's most-repeated vocabulary and had no type: a hundred form fields spelled it under a dozen labels (priority, criticality, severity, urgency, risk level, importance, weight, confidence, readiness, feasibility). They are one instrument, so they are now one enum. About a third of them document only the lower three bands; those bind too, under the existing subset rule — the same scale with its top band unused is not a second scale.- One risk matrix, not two.
GoalRiskEntry,SystemMigrationRiskEntryandTransitionRiskEntryrated probability and impact on their own three-band matrix while every other risk in the model rated on five bands. They now useProbability×Impactlike the rest, so two risks from different documents are comparable and an author never has to work out which instrument an entry uses. - Together: 106 more enum-typed form fields (42 → 148), and 25 enums now reach the emitted metadata (was 24).
- Breaking for a Dart consumer of the generated facade, not for a document.
106 accessors change from
String?to an enum type intom_som_dart_v01.3.0. The document format is unchanged — the same keys carry the same tokens — so the model major does not move. Values are stored as the constant name (critical,high), so a document that spelled a bandCriticalor wrote MoSCoWMustinto one of these fields should be re-spelled; since 1.2.0 the instance validator reports the old spelling asenumValueUnknownrather than dropping it. - Field labels and hints that merely listed the band names no longer do: the legal set travels with the enum, in every language, with each constant's own description.
- Depends on
tom_som_dart_runtime^1.3.0.
1.2.0 #
- The four shared value enums are bound.
Priority,Status,ProbabilityandImpactwere declared with 160 documented constants between them and used by no field; they now type 20 form fields, so all 24 of the model's enums reach the emitted metadata (was 20) through 42 enum-typed@Formfields (was 22). A field takes an enum when the band set its label and hint document is that enum's band set — the two other qualitative scales the model uses (the four-bandCritical / High / Medium / Low, the three-bandLow / Medium / Highmatrix) are deliberately stillString. - Breaking for a Dart consumer of the generated facade, not for a document.
Twenty accessors change from
String?to an enum type intom_som_dart_v01.2.0. The document format is unchanged: the same keys carry the same tokens, so a document authored under model 1.1 loads under 1.2 — which is why the model major does not move. Values are stored as the constant name (must,approved), so a document that spelled themMust/Approvedshould be re-spelled; nothing rejects the old spelling yet, but the typed accessor reads it asnull. - The generated DocSpecs schemas now report the model's minor in their own
version (
solution-blueprint/1.2); the schema filenames stay keyed to the major, as before. Before this release every schema silently reported1.0whatever the model said. - Depends on
tom_som_dart_runtime^1.2.0.
1.1.0 #
- Model additions in the SBP information and experience sections: the CE-EN
domain-enum extract routing on
information_and_data_modeland the entity-typed shared-DTO member locus onexperience_and_interface_design. Additive — documents authored under model 1.0 load unchanged. - Depends on
tom_som_dart_runtime^1.1.0.
1.0.0 #
- Initial version.