@@ -421,7 +421,7 @@ def check_mnf_01():
421421
422422
423423# ---------------------------------------------------------------------------
424- # TPL-01 — DEPENDS ON chain from python-fastapi.md is complete
424+ # TPL-01 — DEPENDS ON chain from the fixture stack is complete
425425# ---------------------------------------------------------------------------
426426
427427def _collect_chain (rel_path , visited = None ):
@@ -440,28 +440,25 @@ def _collect_chain(rel_path, visited=None):
440440
441441def check_tpl_01 ():
442442 failures = []
443- chain = _collect_chain ("templates/stack/python-fastapi.md" )
443+
444+ # The fixture, not a real stack: it is the one stack upstream keeps, so
445+ # the check keeps its input in a tree that ships no stack of its own.
446+ chain = _collect_chain ("templates/fixture/stack.md" )
444447 required = [
445- "templates/stack/python-lib.md" ,
446- "templates/stack/python-service.md" ,
447- "templates/core/git.md" ,
448- "templates/core/docs.md" ,
449448 "templates/core/quality.md" ,
449+ "templates/core/git.md" ,
450+ "templates/core/testing.md" ,
450451 "templates/core/config.md" ,
451- "templates/backend/http.md" ,
452- "templates/backend/database.md" ,
453- "templates/backend/observability.md" ,
454- "templates/backend/quality.md" ,
455- "templates/backend/features.md" ,
456- "templates/backend/messaging.md" ,
452+ "templates/core/quality-gates.md" ,
453+ "templates/security/security.md" ,
457454 ]
458455 seen = Inspected ()
459- seen .count ("files in the python-fastapi chain" , len (chain ))
456+ seen .count ("files in the fixture chain" , len (chain ))
460457 seen .count ("files required to be in it" , len (required ))
461458
462459 for req in required :
463460 if req not in chain :
464- failures .append (f" python-fastapi .md chain missing: '{ req } '" )
461+ failures .append (f" fixture/stack .md chain missing: '{ req } '" )
465462 return seen .failures () + failures , seen .notes ()
466463
467464
@@ -503,19 +500,20 @@ def check_tpl_02():
503500 if not base_content :
504501 failures .append (" core/testing.md [ID: base-testing] section is empty" )
505502
506- flask_content = _extract_section (
507- os .path .join (ROOT , "templates" , "stack" , "python-flask.md" ), "python-service-testing"
503+ extension = _extract_section (
504+ os .path .join (ROOT , "templates" , "fixture" , "stack.md" ),
505+ "base-testing-general"
508506 )
509- if not flask_content :
507+ if not extension :
510508 failures .append (
511- " stack/python-flask .md [EXTEND: python-service- testing] section is empty "
512- "— base rules may have been lost"
509+ " fixture/stack .md [EXTEND: base- testing-general ] section is "
510+ "empty — base rules may have been lost"
513511 )
514512
515513 seen .count ("sections extracted" , 2 )
516514 seen .count ("lines read from base-testing" , len (base_content ), floor = 0 )
517- seen .count ("lines read from python-service-testing " ,
518- len (flask_content ), floor = 0 )
515+ seen .count ("lines read from the fixture's extension " ,
516+ len (extension ), floor = 0 )
519517 return seen .failures () + failures , seen .notes ()
520518
521519
@@ -528,22 +526,26 @@ def check_tpl_03():
528526 seen = Inspected ()
529527
530528 original = _extract_section (
531- os .path .join (ROOT , "templates" , "stack" , "go-lib.md" ), "go-lib-stack"
529+ os .path .join (ROOT , "templates" , "core" , "testing.md" ),
530+ "testing-container-e2e"
532531 )
533532 override = _extract_section (
534- os .path .join (ROOT , "templates" , "stack" , "go-service.md" ), "go-lib-stack"
533+ os .path .join (ROOT , "templates" , "fixture" , "stack.md" ),
534+ "testing-container-e2e"
535535 )
536536
537537 if not original :
538- failures .append (" stack/go-lib.md [ID: go-lib-stack] section is empty" )
538+ failures .append (
539+ " core/testing.md [ID: testing-container-e2e] section is empty" )
539540 if not override :
540541 failures .append (
541- " stack/go-service.md [OVERRIDE: go-lib-stack] section is empty"
542+ " fixture/stack.md [OVERRIDE: testing-container-e2e] section is "
543+ "empty"
542544 )
543545 if original and override and original == override :
544546 failures .append (
545- " [OVERRIDE: go-lib-stack ] content is identical to the original "
546- "[ID: go-lib-stack ] — override has no effect"
547+ " [OVERRIDE: testing-container-e2e ] content is identical to the "
548+ "original [ID: testing-container-e2e ] — override has no effect"
547549 )
548550
549551 seen .count ("sections extracted" , 2 )
@@ -2625,7 +2627,7 @@ def check_sys_20():
26252627 {"id" : "MNF-05" , "spec" : "SAIT-INT-MNF-05-001A" ,
26262628 "title" : "resolve.py resolution matches PyYAML resolution" , "fn" : check_mnf_05 },
26272629 {"id" : "TPL-01" , "spec" : "SAIT-INT-TPL-01-001A" ,
2628- "title" : "DEPENDS ON chain from python-fastapi.md is complete" , "fn" : check_tpl_01 },
2630+ "title" : "DEPENDS ON chain from the fixture stack is complete" , "fn" : check_tpl_01 },
26292631 {"id" : "TPL-02" , "spec" : "SAIT-INT-TPL-02-001A" ,
26302632 "title" : "EXTEND adds rules without removing base rules" , "fn" : check_tpl_02 },
26312633 {"id" : "TPL-03" , "spec" : "SAIT-INT-TPL-03-001A" ,
0 commit comments