tom_specs_model 1.6.20
tom_specs_model: ^1.6.20 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.20 #
- No model change. The chain moves with the runtimes, which list a value's
paragraphs, the units
afterParagraphcounts (SOM §11.9.1 "Paragraphs"). The model's documentation also carries the correctedcodespecs_prompt.md§4.2 / §10.2: the instance tier reports a cleared required field.
1.6.19 #
- No model change. The chain moves with the runtimes, which read a question's options, its recommended letter and its answer letter (SOM §11.9.2).
1.6.18 #
- No model change. The chain moves with the runtimes, which gain the
extraction of a review round's answers for a step folder (SOM §11.9.7:
extractAnswers,renderAnswers).
1.6.17 #
- No model change. The chain moves with the runtimes, which gain writing
changes as inline marks (SOM §11.9.3:
markChangeText,setMarked,markAgainst).
1.6.16 #
- No model change. The chain moves with the runtimes, which gain the review of inline marks (SOM §11.9.3): listing marks with revision-stable ids, deciding them mark by mark (accept / reject / leave, with a stale revision refused), accepting or rejecting all under a path, and removing all annotations. Accept and reject follow the whitespace rules.
1.6.15 #
- No model change. The release aligns the model chain with the runtimes,
which gain the review-annotation API (SOM §11.9: comment blocks, question
blocks and CriticMarkup inline marks in content values) and the
annotationMisplaced,annotationMalformedandduplicateAnnotationIdfindings. SOM §11.9 andtom_specs_project_flow.mdPF-ITR-REV document the notation and the review round.
1.6.14 #
- Every reference field states whether it holds one id or several
(
Field.multiple,tom_specs_model_rules.md§6.2 rule 3): 68 list-valued reference fields are markedmultiple— those whose hint or name says several ids, and four that documents showed to hold lists (a UAT scenario's interactions, an acceptance criterion's scenarios and deliverables, a responsive rule's screens). Requirestom_specs_core0.4.0.
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.