SYSTEM BREAKDOWN
OWNER: 01_System/build_system_breakdown.py — this file is GENERATED, do not hand-edit. REVIEW: regenerate whenever a component or an interface changes in project_data.py. Generated 2026-09-07 from the component register (13 components) and the interface register (22 interfaces).
Mandated by GOV-B4.10: a system that cannot be drawn as parts and interfaces must not be built. This is that drawing, and it is generated from the registers rather than drawn by hand, so it cannot quietly stop being true.
1. Subsystems
| ID | Component | The one thing it is responsible for | What it consumes | Where it lives | Owner | Requirements |
|---|---|---|---|---|---|---|
| C1 | Source of Truth | Hold every project fact exactly once | Zaid's requests; researched sources | project_data.py | Master Brain | REQ-CON-01, REQ-CON-05, REQ-WEB-01 |
| C2 | Register Projector | Turn C1 into typed registers and plain-text projections | C1 | Project_Registers_v2.0.xlsx, register CSVs | Master Brain | REQ-SYS-06, REQ-CON-03 |
| C3 | Dashboard Generator | Project live status into one status surface | C1 | Dashboard.html | Master Brain | REQ-SYS-15, REQ-SYS-16 |
| C4 | Help Hub Generator | Make the deliverables usable without the author | C1 | 09_Help_Hub/ | Master Brain | REQ-SYS-14, REQ-SYS-16 |
| C5 | Study Builder | Assemble the business enabling study | C1, C6 | NDIS_and_Aged_Care_Business_Enabling_Study_v2.0.docx | Master Brain | REQ-SYS-01, REQ-SYS-02, REQ-SYS-03, REQ-SYS-04, REQ-SYS-06, REQ-SYS-08, REQ-SYS-09, REQ-SYS-12, REQ-SYS-13, REQ-SYS-18, REQ-CON-02, REQ-AC-04 |
| C6 | Financial Model | Compute unit economics, break-even and runway | C1 rate inputs | NDIS_and_Aged_Care_Financial_Model_v2.0.xlsx | Master Brain | REQ-SYS-05, REQ-SYS-07, REQ-SYS-10, REQ-SYS-11 |
| C7 | Transfer Pack Generator | Make the project resumable by a stranger | C1 | 00_Handover/ | Master Brain | REQ-SYS-17 |
| C8 | Checker Suite | Prove compliance mechanically rather than by assertion | All generated artefacts | checker_run_log.txt | Master Brain | REQ-CON-01, REQ-CON-04, REQ-CON-06, REQ-MOP-01, REQ-SYS-17 |
| C9 | Decision Pack | Present the decision to Zaid in briefing form | C5, C6 | NDIS_and_Aged_Care_Decision_Pack_v2.0.pptx | Master Brain | REQ-SYS-08, REQ-MOE-01 |
| C10 | Aged Care Financial Model | Compute aged care unit economics per client per month and the structure comparison | C1 rate inputs | model_agedcare.py | Master Brain | REQ-AC-01, REQ-AC-02, REQ-AC-03 |
| C11 | Trade Study Engine | Score the four business-order alternatives against weights fixed before scoring | C6 and C10 outputs | trade_study.py | Master Brain | REQ-SYS-08 |
| C12 | Business Plan Twin | Hold the PIL-BZ business plan and generate its single-sheet A3 page | C6 and C10 outputs | business_plan.json, BUSINESS_PLAN_A3.html | Master Brain | REQ-BUS-01 |
| C13 | Placement Enforcement | Keep every file in the folder the placement map names, and sweep debris to the archive with a hash manifest | The file tree | tidy.py, FILE_PLACEMENT_MAP.md | Master Brain | REQ-CON-06 |
2. Interfaces
Every arrow between two subsystems is a row here. An arrow that is not a row, or a row that is not an arrow, is a defect (GOV-B4.9).
| ID | From | To | Direction | What crosses | Form | When | Owner |
|---|---|---|---|---|---|---|---|
| IF-01 | project_data.py (C1 Source of Truth) | build_registers.py (C2 Register Projector) | A to B | All register rows | Python data structures | On every build | Master Brain |
| IF-02 | build_registers.py (C2) | 03_Registers/Project_Registers_v2.0.xlsx and *.csv | A to B | Typed register tables and plain-text projections | xlsx, csv | On every build | Master Brain |
| IF-03 | project_data.py (C1) | build_dashboard.py (C3 Dashboard Generator) | A to B | Register counts, open items, metric lineage | Python data structures | On every build | Master Brain |
| IF-04 | build_dashboard.py (C3) | Dashboard.html at the project root | A to B | Generated status projection with PC/Mobile toggle | HTML | On every build | Master Brain |
| IF-05 | project_data.py (C1) | build_helphub.py (C4 Help Hub Generator) | A to B | FAH register, glossary, deliverables map, troubleshooting entries | Python data structures | On every build | Master Brain |
| IF-06 | build_helphub.py (C4) | 09_Help_Hub/index.html | A to B | Help Hub site | HTML | On every build | Master Brain |
| IF-07 | project_data.py (C1) | build_study.py (C5 Study Builder) | A to B | Framing, requirements, trade studies, sources, risks | Python data structures | On every build | Master Brain |
| IF-08 | model_params.py (C6 Financial Model) | build_study.py (C5) | A to B | Computed margins, break-even, runway, scenarios | Python floats | On every build | Master Brain |
| IF-09 | model_params.py (C6) | 05_Outputs/NDIS_and_Aged_Care_Financial_Model_v2.0.xlsx | A to B | Driver cells and live formulas | xlsx with formulas | On every build | Master Brain |
| IF-10 | project_data.py (C1) | build_handover.py (C7 Transfer Pack Generator) | A to B | Purpose, governance, requirements, tools, registers, live state | Python data structures | On every build | Master Brain |
| IF-11 | build_handover.py (C7) | 00_Handover/ transfer pack and MANIFEST.txt | A to B | Plain-text pack with SHA-256 of every source | txt, csv | On every build | Master Brain |
| IF-12 | All generated artefacts | checkers/run_checks.py (C8 Checker Suite) | A to B | Files to be validated | Filesystem paths | On every build and at session close | Master Brain |
| IF-13 | checkers/run_checks.py (C8) | 01_System/checker_run_log.txt | A to B | Pass or fail result for each of the checks | Plain text | On every run | Master Brain |
| IF-14 | 02_Work/scratch research and verification files | project_data.py SRC register | A to B | Sourced claims with URLs and confidence | Markdown read by a human, transcribed to SRC rows | Once, at Stage 2 | Research agents |
| IF-15 | Zaid | project_data.py RQ and ACT registers | A to B | Requests verbatim, and answers to open actions | Chat, transcribed | On every request | Zaid |
| IF-16 | project_data.py (C1 Source of Truth) | model_agedcare.py (C10 Aged Care Financial Model) | A to B | Source and assumption identifiers, resolved by checker C36 | Python identifiers | On every build | Master Brain |
| IF-17 | model_agedcare.py (C10 Aged Care Financial Model) | build_financial_model.py (C6 Financial Model) | A to B | Aged care per-client economics, reconciled cell by cell by checker C37 | Python function returns | On every build | Master Brain |
| IF-18 | model_agedcare.py (C10 Aged Care Financial Model) | trade_study.py (C11 Trade Study Engine) | A to B | Contribution per client, capital and break-even figures cited by each score | Python function returns | On every build | Master Brain |
| IF-19 | trade_study.py (C11 Trade Study Engine) | build_study.py (C5 Study Builder) | A to B | Ranking, margin and the sensitivity that escalates the decision | Python function returns | On every build | Master Brain |
| IF-20 | model_agedcare.py (C10 Aged Care Financial Model) | build_business_plan_json.py (C12 Business Plan Twin) | A to B | Every figure in the business plan's cost-benefit and revenue sections | Python function returns | On every build | Master Brain |
| IF-21 | build_business_plan_json.py (C12 Business Plan Twin) | build_business_plan.py (C12 Business Plan Twin) | A to B | business_plan.json, validated by twelve checks before the A3 page is generated | JSON file | On every build | Master Brain |
| IF-22 | tidy.py (C13 Placement Enforcement) | run_checks.py (C8 Checker Suite) | A to B | The placement report, consumed by checker C35 so there is one definition of what belongs where | Python function return | On every check run | Master Brain |
3. Dependency map
Read down the left column for the producer and across for the consumer. A mark means the producer sends something to the consumer.
| produces \\ consumes | Source | Register | Dashboard | Help | Study | Financial | Transfer | Checker | Decision | Aged | Trade | Business | Placement |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Source | — | → | → | ||||||||||
| Register | — | ||||||||||||
| Dashboard | — | ||||||||||||
| Help | — | ||||||||||||
| Study | — | ||||||||||||
| Financial | — | → | → | ||||||||||
| Transfer | — | ||||||||||||
| Checker | — | ||||||||||||
| Decision | — | ||||||||||||
| Aged | — | ||||||||||||
| Trade | → | — | |||||||||||
| Business | — | ||||||||||||
| Placement | → | — |
6 directed dependencies were derived from the interface register. A blank cell means no interface row connects those two components in that direction; if one is missing, the fix is a row in the interface register, never a line added to this file, because this file is regenerated and would lose it.
4. Build order
GOV-B4.11 forbids integrating an unverified part. The order below is the order the interfaces impose: nothing is built before what it consumes.
| Step | What is built | Why it cannot come earlier |
|---|---|---|
| 1 | C1 Source of Truth | Everything else is a projection of it. Nothing can be built first. |
| 2 | The financial models | They compute the figures every artefact quotes. Built against the source of truth, verified before anything reads them. |
| 3 | The register projections | The workbook and its plain-text CSVs. Generated only. |
| 4 | The deliverables | Study, financial workbook, decision pack, business plan twin and its A3 page. |
| 5 | The surfaces | Dashboard, Help Hub, README, transfer pack. They read everything above and originate nothing. |
| 6 | The checker suite | Built last and run first at every gate. It is the only part that is allowed to fail the build. |
5. The web-application function slot (GOV-B7.1)
GOV-B7.1 requires every project to carry the web-application function in its requirements from framing — a deploy-anywhere self-contained container, a named-user login with passwords hashed at rest, and a pluggable AI-engine connector — and says the slot applies retroactively to every existing project. GOV-B7.2 says the slot is mandatory but the build timing belongs to the Owner.
Status in this project: SLOT DECLARED, NOT BUILT. It is carried as REQ-WEB-01 in the requirements register and as BKL-011 in the backlog, not as a delivered component, because Zaid has not asked for it running. The reference implementation named by GOV-B7.4 is the Flask application in the governance project's own outputs, which is connected to this session but has not been read into this project — reading it in would be a Class 2 change and it has not been requested.
The three constraints that already bind, whether or not it is ever built: AI-engine credentials live in server environment variables only and a key in any client-served file is a Class 1 defect (GOV-B7.3, INV-5); server-side requests are http or https with the host validated and localhost, loopback, private and reserved addresses refused (GOV-B7.3); and the checker suite already scans every generated artefact for credential material (C08).