Files
FreeCADWasmDev/docs/current/BUSINESS_ACCEPTANCE_HANDOFF.md

4.6 KiB

Unattended Business Acceptance

2026-09-16 renewed authorization: continuous development is now managed through freecad-web-acceptance.service; see CONTINUOUS_ACCEPTANCE.md. Its first priority is the separate IFC semantic-export contract. The original 1507 requirements remain, and this explicit addition makes 1508 in total. The one-shot runner below is retained for focused execution, not background authoring.

User authorization: 2026-09-16. Automatically reconcile the 1507 business requirements with current executable cases and the 21-item manual. Repairs, focused tests and evidence updates are authorized. Keep the full denominator.

Latest implementation: BIM IFC and relationship repair. The two native IFC format contracts now pass; BIM_Ungroup and BIM_Unclone also have passing native/facade, transaction and persistence cases. Reuse these implementations and local dependencies when continuing remaining commands. The existing PartDesign Hole and Points import/export cases are now registered and executed as well. The previous 165/1507 result is historical; current source changes invalidate affected proof. Read the generated reconciliation for current counts across 1508 requirements. There are still 1342 requirements without executable coverage. See ACCEPTANCE_EFFICIENCY_PROGRESS.md for the latest verified IFC behavior and reductions in repeated validation work.

Sources Of Truth

  • business-acceptance-reconciliation.json: every requirement, status, reason, executable-case availability, retained evidence and manual references.
  • business-acceptance.json: fingerprinted execution ledger.
  • web-business-completion-audit.json: implementation and acceptance are separate, with actual per-module accepted/total/pending counts.
  • unattended-business-acceptance.json: latest execution checkpoint.
  • business-acceptance-runs/: immutable previous sweeps and current run journal.

reconciliationComplete means every requirement and manual item is accounted for. It never implies businessAcceptanceComplete. Missing cases and retained historical failures remain outstanding business work. BIM native IFC format support is now tested; complete semantic authoring is a separate boundary.

Resume

python3 tools/run_unattended_business_acceptance.py

The runner uses the existing module contracts, executes up to 32 cases sharing a build owner per batch sequentially, reuses unchanged passing proof, retains failures and continues independent modules. Unchanged failed requirements are preserved even when batches change; changed source, cases or runner inputs make them eligible again. Evidence files are shared within each invocation. --retry-failed is an explicit diagnostic override, not a completion shortcut. Use --modules Part Web for a focused sweep. Missing contracts are reported; the runner cannot invent business assertions or certify uncovered commands.

Refresh reporting without executing business cases:

python3 tools/generate_web_business_completion_audit.py
python3 tools/prepare_business_acceptance_batch.py --report-only

The old implementation-only watchdog was stopped to avoid competing ledger writes and its repeated restart loop. The renewed user authorization enables one serial development scheduler under the user service. The one-shot case runner itself does not author cases or publish changes.

Evidence Rules

The 21 manual items have explicit supporting references in tools/manual-business-mapping.json. Ten desktop commands additionally have executable mappings through tools/web-acceptance-cases.mjs; the existing manual browser runner supplies actual assertions, screenshots and state. Entry checks never certify every command in a workbench.

The acceptance audit checks source/artifact fingerprints, case dependencies, the evidence document hash, successful input/result assertions and attached manual evidence hashes. Changed dependencies invalidate proof even when the runtime manifest is unchanged. Historical evidence is retained.

Business completion requires current passing evidence for every requirement. For uncovered items, add cases to the owning module's contract and implement any failing behavior in the existing native/React route. Do not replace business assertions with route existence, source inspection or constant pass.

BIM's bim.formatWorkflow now uses the real IfcOpenShellNative document binding and upstream IFC4 BRep serializer. Its passing format cases do not certify the complete upstream Python API or all semantic BIM authoring/export operations. Those remain separate work. Keep the original failing evidence.