SC4SAP Create Program
Core ABAP program creation skill. Generates a Main Program wrapped with conditional Includes following the sc4sap template convention. Supports both OOP (two-class split: Data + Screen/ALV) and Procedural (PERFORM) paradigms. Full pipeline: SAP version preflight → Socratic interview → planner → writer spec → user confirm → executor/qa/reviewer.
Every response triggered by this skill MUST begin with [Model: <main-model> · Dispatched: <sub-summary>] per ../../common/model-routing-rule.md § Response Prefix Convention.
Multi-phase skill. Before each Agent(...) dispatch, emit ▶ phase=<id> (<label>) · agent=<name> · model=<Opus 4.7|Sonnet 4.6|Haiku 4.5> per ../../common/model-routing-rule.md § Phase Banner Convention.
Four teamMode integration points — Type A: Phase 1A (post-interview cross-module consistency) + Phase 2 (planner conflict resolution) — see team-mode.md. Type B: Phase 4 Wave 2/3 (executor's novel code gets live consultant review) — see team-mode-b.md. Type D: Phase 1A↔1B bridge — user-chosen at Phase 1A close (legacy sequential 1B vs Type D team synthesis); analyst + architect + consultant parallel synthesis replaces sequential 1B when selected — see team-mode-d.md. Base protocol: ../../common/team-consultation-protocol.md.
| Convention |
Reference File |
Applied In |
| Include structure (t/s/c/a/o/i/e/f/_tst) |
../../common/include-structure.md |
Planner, Executor |
| OOP two-class pattern (LCL_DATA + LCL_ALV) |
../../common/oop-pattern.md |
Executor (OOP mode only) |
| ALV rules (Full vs SALV, field catalog standard) |
../../common/alv-rules.md |
Executor, Reviewer |
| Text element rule (no hardcoded display literals) |
../../common/text-element-rule.md |
Executor, Reviewer |
| Constant rule (no magic literals in logic) |
../../common/constant-rule.md |
Executor, Reviewer |
Procedural FORM naming (_{screen_no} suffix) |
../../common/procedural-form-naming.md |
Executor (Procedural mode only), Reviewer |
| Naming conventions (program/include/class/screen) |
../../common/naming-conventions.md |
Planner, Executor, Reviewer |
| ECC DDIC fallback (Table / DTEL / DOMA on ECC) |
../../common/ecc-ddic-fallback.md |
Planner (gate), Executor (program generation), Reviewer |
| Clean ABAP — shared baseline |
../../common/clean-code.md |
Executor, Reviewer (always) |
| Clean ABAP — OOP paradigm |
../../common/clean-code-oop.md |
Executor, Reviewer — only when Phase 1B paradigm = OOP |
| Clean ABAP — Procedural paradigm |
../../common/clean-code-procedural.md |
Executor, Reviewer — only when Phase 1B paradigm = Procedural |
| Mandatory main-program template (OOP) |
../../common/oop-sample/zrsc4sap_oop_ex.prog.abap (+ companion includes / screens in same folder) |
Executor Wave 3 (starting skeleton) + Reviewer B3 bucket (structural match) — OOP paradigm |
| Mandatory main-program template (Procedural) |
../../common/procedural-sample/main-program.abap |
Executor Wave 3 + Reviewer B3 bucket — Procedural paradigm |
Paths are relative to this skill's directory (sc4sap/skills/create-program/).
ECC DDIC fallback gate. When the planner's object list includes a new Table, Data Element, or Domain AND SAP_VERSION = ECC, Phase 4 (Executor) must not call CreateTable / CreateDataElement / CreateDomain. Instead, follow ../../common/ecc-ddic-fallback.md: generate a helper report in $TMP using the matching template under skills/create-object/ecc/, activate the helper, then emit the mandatory user message (SE38 run → uncheck dry-run → SE11 activate + assign transport). Do not treat the DDIC object as created until the user confirms activation. Remaining objects (classes, includes, screens, …) proceed on the normal flow; the plan should sequence the DDIC helpers first so the user can create them before code that depends on them is activated.
MUST run BEFORE the Socratic interview starts. The entire development approach (tables, BAPIs, CDS availability, ABAP syntax, RAP eligibility) depends on the SAP platform and release.
Steps:
- Read
.sc4sap/config.json for sapVersion, abapRelease, and activeModules
- Also read
.sc4sap/sap.env → SAP_ACTIVE_MODULES as fallback
- Load
common/active-modules.md and precompute the cross-module concern list for the program's primary module. Every downstream phase (planner, writer, executor) receives this list and must factor in integration fields (e.g., MM primary + PS active → add PS_POSID).
- If missing or stale, ask the user to confirm:
- ECC (ECC 6.0) — classical DDIC, LFA1/KNA1/BKPF/BSEG/MKPF/MSEG world, SAPGUI only
- S/4HANA On-Premise — ACDOCA, MATDOC, Business Partner (BUT000), CDS/AMDP preferred, Fiori possible, ADT-first
- S/4HANA Cloud (Public) — no classical Dynpro, no SE80 custom dev, only Developer Extensibility / Key User Extensibility (RAP managed, Custom Fields/Logic, Custom Business Objects)
- S/4HANA Cloud (Private) — similar to On-Premise but with extensibility-first mindset
- Confirm
abapRelease (e.g. 750, 756, 758) — drives allowed syntax
Branching consequences:
- ECC: no RAP, no ACDOCA, no Business Partner; inline decl only if 740+; CDS/AMDP typically unavailable (<750)
- S/4HANA On-Prem: prefer CDS + AMDP, RAP where applicable, Business Partner APIs, ACDOCA for finance
- S/4HANA Cloud Public: REJECT classical Dynpro / custom screen + GUI Status requests. The standard Full-ALV path (CL_GUI_ALV_GRID + Docking Container) is not executable on Cloud Public — must redirect to RAP + Fiori Elements,
if_oo_adt_classrun, or SALV-only output. Fail-fast with an explanation. Full prohibited-statement list and Cloud-native API replacements: see ../../common/cloud-abap-constraints.md.
- S/4HANA Cloud Private: classical Dynpro technically possible but discouraged; warn user and confirm intent before proceeding.
Outputs:
.sc4sap/program/{PROG}/platform.md — resolved platform, release, and constraints
- Interview dimensions pre-filtered by platform (e.g., ALV-Full hidden on Cloud Public)
Full procedure (when-to-stock, three-option prompt, dispatch template, persistence paths, reuse-gating rules) lives in inventory-lookups.md. Read and follow literally. Output files consumed by planner / writer / executor:
.sc4sap/program/{PROG}/cbo-context.md
.sc4sap/program/{PROG}/customization-context.md
Full procedure — two-stage rule, lead agents, dimension lists, skip rules, gates, output files, and enforcement contracts — lives in interview-gating.md. Read that file and follow it literally before asking the first question.
One-line summary:
Phase 1A sap-{module}-consultant interviews business context (purpose / reason / company rules / reference assets / standard-SAP alternatives) → file module-interview.md, gate ≤ 5% → Phase 1B sap-analyst + sap-architect interview technical dimensions (purpose-type / paradigm / display / screen / data / package / test) → file interview.md, gate ≤ 5% → proceed to <Spec_Approval_Gate>. Phase 1B never starts before 1A closes; Phase 2 planner refuses to run if either file is missing.
Full procedure — required steps, enforcement contract, rationale, spec template, and the verbatim user-facing approval prompt — lives in spec-approval-gate.md. Read that file and follow it literally.
One-line summary (the full text lives in the companion file):
Invoke sap-writer → produce spec.md → display to user → wait for an explicit approval keyword (승인 / approve / ok / proceed / go ahead / confirmed). "yes" / "빨리" / "해봐" / silence are NOT approval — loop with revisions. Phase 4 Executor refuses to run if spec.md is missing, unapproved, or modified after approval.
- If
.sc4sap/session-trust.log already has a line within the last 24h, skip silently.
- Exception:
GetTableContents and GetSqlQuery are NEVER auto-approved — they require explicit per-call user consent. See ../trust-session/SKILL.md Layer 1.
trust-session is NOT re-invoked here — it already ran at the start of Phase 1A.
Full procedure — verbatim mode-prompt text, per-mode semantics, state.json schema (also drives C-2 resume support), and manual-mode phase-transition prompt — lives in execution-mode.md. Read that file and follow it literally before dispatching Phase 4.
Read that file before dispatching any agent. It is the authoritative source for:
- Phase 0 — SAP Version Preflight
- Phase 1A — Module Interview (
sap-{module}-consultant, business context)
- Phase 1B — Program Interview (
sap-analyst + sap-architect, technical dimensions)
- Phase 2 — Planning (
sap-planner + consultants, CBO reuse gate, SPRO lookup)
- Phase 3 — Spec Writing (
sap-writer)
- Phase 4 — Implementation (
sap-executor)
- Phase 5 — QA (
sap-qa-tester, OOP mode)
- Phase 6 — Review (
sap-code-reviewer, mandatory, see phase6-review.md)
- Phase 7 — Debug escalation (
sap-debugger)
- Phase 8 — Completion Report (gated on Phase 6 PASS)
Do not inline or paraphrase phase logic here — update agent-pipeline.md instead so the pipeline stays single-sourced.
Task: {{ARGUMENTS}}
1---2name: sc4sap-create-program3description: Create ABAP programs (Report/CRUD/ALV/Batch) with Main+Include structure, OOP or Procedural, and full agent-driven coding/QA pipeline4---56# SC4SAP Create Program78Core ABAP program creation skill. Generates a Main Program wrapped with conditional Includes following the sc4sap template convention. Supports both OOP (two-class split: Data + Screen/ALV) and Procedural (PERFORM) paradigms. Full pipeline: SAP version preflight → Socratic interview → planner → writer spec → user confirm → executor/qa/reviewer.91011<Purpose>12sc4sap:create-program is the flagship skill for creating new ABAP programs. It handles a wide range of purposes (Report, CRUD, ALV list, Batch, Interface). Before coding starts, it runs an internal Socratic interview to resolve ambiguity, then produces a confirmed spec, then orchestrates coding and QA agents to deliver activated, tested ABAP objects following sc4sap conventions.13</Purpose>1415<Response_Prefix>Every response triggered by this skill MUST begin with `[Model: <main-model> · Dispatched: <sub-summary>]` per [`../../common/model-routing-rule.md`](../../common/model-routing-rule.md) § Response Prefix Convention.</Response_Prefix>1617<Phase_Banner>Multi-phase skill. Before each `Agent(...)` dispatch, emit `▶ phase=<id> (<label>) · agent=<name> · model=<Opus 4.7|Sonnet 4.6|Haiku 4.5>` per [`../../common/model-routing-rule.md`](../../common/model-routing-rule.md) § Phase Banner Convention.</Phase_Banner>1819<Team_Mode>Four teamMode integration points — Type A: **Phase 1A** (post-interview cross-module consistency) + **Phase 2** (planner conflict resolution) — see [`team-mode.md`](team-mode.md). Type B: **Phase 4 Wave 2/3** (executor's novel code gets live consultant review) — see [`team-mode-b.md`](team-mode-b.md). Type D: **Phase 1A↔1B bridge** — **user-chosen** at Phase 1A close (legacy sequential 1B vs Type D team synthesis); analyst + architect + consultant parallel synthesis replaces sequential 1B when selected — see [`team-mode-d.md`](team-mode-d.md). Base protocol: [`../../common/team-consultation-protocol.md`](../../common/team-consultation-protocol.md).</Team_Mode>2021<Use_When>22- User says "create program", "new report", "ALV program", "CRUD program", "make me a batch program", etc.23- A new ABAP executable program (REPORT) needs to be created from scratch24- Program requires the Main+Include wrapping convention25- ALV display is needed (full CL_GUI_ALV_GRID or simple SALV popup)26</Use_When>2728<Do_Not_Use_When>29- Creating a single class/interface/table — use `/sc4sap:create-object`30- Modifying an existing program — use direct `UpdateProgram` / `UpdateInclude` MCP calls31- Creating a RAP business object / OData service — use `/sc4sap:create-object` (with service binding + behavior definition)32- User wants only scaffolding without coding — use `/sc4sap:create-object` with type=program33</Do_Not_Use_When>3435<Shared_Conventions>36The following rules are **shared across sc4sap skills** and live in `sc4sap/common/`. Load and apply them during the relevant phases of this skill:3738| Convention | Reference File | Applied In |39|------------|----------------|------------|40| Include structure (t/s/c/a/o/i/e/f/_tst) | `../../common/include-structure.md` | Planner, Executor |41| OOP two-class pattern (LCL_DATA + LCL_ALV) | `../../common/oop-pattern.md` | Executor (OOP mode only) |42| ALV rules (Full vs SALV, field catalog standard) | `../../common/alv-rules.md` | Executor, Reviewer |43| Text element rule (no hardcoded display literals) | `../../common/text-element-rule.md` | Executor, Reviewer |44| Constant rule (no magic literals in logic) | `../../common/constant-rule.md` | Executor, Reviewer |45| Procedural FORM naming (`_{screen_no}` suffix) | `../../common/procedural-form-naming.md` | Executor (Procedural mode only), Reviewer |46| Naming conventions (program/include/class/screen) | `../../common/naming-conventions.md` | Planner, Executor, Reviewer |47| ECC DDIC fallback (Table / DTEL / DOMA on ECC) | `../../common/ecc-ddic-fallback.md` | Planner (gate), Executor (program generation), Reviewer |48| Clean ABAP — shared baseline | `../../common/clean-code.md` | Executor, Reviewer (always) |49| Clean ABAP — **OOP paradigm** | `../../common/clean-code-oop.md` | Executor, Reviewer — **only when Phase 1B `paradigm = OOP`** |50| Clean ABAP — **Procedural paradigm** | `../../common/clean-code-procedural.md` | Executor, Reviewer — **only when Phase 1B `paradigm = Procedural`** |51| **Mandatory main-program template (OOP)** | `../../common/oop-sample/zrsc4sap_oop_ex.prog.abap` (+ companion includes / screens in same folder) | Executor Wave 3 (starting skeleton) + Reviewer B3 bucket (structural match) — OOP paradigm |52| **Mandatory main-program template (Procedural)** | `../../common/procedural-sample/main-program.abap` | Executor Wave 3 + Reviewer B3 bucket — Procedural paradigm |5354Paths are relative to this skill's directory (`sc4sap/skills/create-program/`).5556**ECC DDIC fallback gate.** When the planner's object list includes a new Table, Data Element, or Domain AND `SAP_VERSION = ECC`, Phase 4 (Executor) must not call `CreateTable` / `CreateDataElement` / `CreateDomain`. Instead, follow [`../../common/ecc-ddic-fallback.md`](../../common/ecc-ddic-fallback.md): generate a helper report in `$TMP` using the matching template under `skills/create-object/ecc/`, activate the helper, then emit the mandatory user message (SE38 run → uncheck dry-run → SE11 activate + assign transport). Do not treat the DDIC object as created until the user confirms activation. Remaining objects (classes, includes, screens, …) proceed on the normal flow; the plan should sequence the DDIC helpers first so the user can create them before code that depends on them is activated.57</Shared_Conventions>5859<Preflight_SAP_Version_Check>60**MUST run BEFORE the Socratic interview starts.** The entire development approach (tables, BAPIs, CDS availability, ABAP syntax, RAP eligibility) depends on the SAP platform and release.6162Steps:631. Read `.sc4sap/config.json` for `sapVersion`, `abapRelease`, and `activeModules`64 - Also read `.sc4sap/sap.env` → `SAP_ACTIVE_MODULES` as fallback65 - Load `common/active-modules.md` and precompute the cross-module concern list for the program's primary module. Every downstream phase (planner, writer, executor) receives this list and must factor in integration fields (e.g., MM primary + PS active → add `PS_POSID`).662. If missing or stale, ask the user to confirm:67 - **ECC** (ECC 6.0) — classical DDIC, LFA1/KNA1/BKPF/BSEG/MKPF/MSEG world, SAPGUI only68 - **S/4HANA On-Premise** — ACDOCA, MATDOC, Business Partner (BUT000), CDS/AMDP preferred, Fiori possible, ADT-first69 - **S/4HANA Cloud (Public)** — **no classical Dynpro**, **no SE80 custom dev**, only **Developer Extensibility** / **Key User Extensibility** (RAP managed, Custom Fields/Logic, Custom Business Objects)70 - **S/4HANA Cloud (Private)** — similar to On-Premise but with extensibility-first mindset713. Confirm `abapRelease` (e.g. `750`, `756`, `758`) — drives allowed syntax7273Branching consequences:74- **ECC**: no RAP, no ACDOCA, no Business Partner; inline decl only if 740+; CDS/AMDP typically unavailable (<750)75- **S/4HANA On-Prem**: prefer CDS + AMDP, RAP where applicable, Business Partner APIs, ACDOCA for finance76- **S/4HANA Cloud Public**: **REJECT classical Dynpro / custom screen + GUI Status requests**. The standard Full-ALV path (CL_GUI_ALV_GRID + Docking Container) is not executable on Cloud Public — must redirect to RAP + Fiori Elements, `if_oo_adt_classrun`, or SALV-only output. Fail-fast with an explanation. **Full prohibited-statement list and Cloud-native API replacements**: see [`../../common/cloud-abap-constraints.md`](../../common/cloud-abap-constraints.md).77- **S/4HANA Cloud Private**: classical Dynpro technically possible but discouraged; warn user and confirm intent before proceeding.7879Outputs:80- `.sc4sap/program/{PROG}/platform.md` — resolved platform, release, and constraints81- Interview dimensions pre-filtered by platform (e.g., ALV-Full hidden on Cloud Public)82</Preflight_SAP_Version_Check>8384<Inventory_Lookups>85**Runs immediately after package + module are resolved during the interview** (Phase 1 dimension #6) and feeds every downstream phase. Two sequential inventory passes: **CBO Inventory** (reusable Z*/Y* objects in the target package — delegated to `sap-stocker` on cache miss) then **Customization Inventory** (existing BAdI impls / CMOD projects / form-based exits / appends per module).8687Full procedure (when-to-stock, three-option prompt, dispatch template, persistence paths, reuse-gating rules) lives in **[`inventory-lookups.md`](inventory-lookups.md)**. Read and follow literally. Output files consumed by planner / writer / executor:88- `.sc4sap/program/{PROG}/cbo-context.md`89- `.sc4sap/program/{PROG}/customization-context.md`90</Inventory_Lookups>9192<Interview_Gating>93**MANDATORY — never skip, never shortcut, never merge.** Phase 1 runs as **two sequential sub-phases** (1A then 1B) on every `sc4sap:create-program` invocation.9495Full procedure — two-stage rule, lead agents, dimension lists, skip rules, gates, output files, and enforcement contracts — lives in **[`interview-gating.md`](interview-gating.md)**. Read that file and follow it literally before asking the first question.9697**One-line summary**:98> Phase 1A `sap-{module}-consultant` interviews business context (purpose / reason / company rules / reference assets / standard-SAP alternatives) → file `module-interview.md`, gate ≤ 5% → Phase 1B `sap-analyst` + `sap-architect` interview technical dimensions (purpose-type / paradigm / display / screen / data / package / test) → file `interview.md`, gate ≤ 5% → proceed to `<Spec_Approval_Gate>`. Phase 1B never starts before 1A closes; Phase 2 planner refuses to run if either file is missing.99</Interview_Gating>100101<Spec_Approval_Gate>102**MANDATORY — never skip, never shortcut.** After `<Interview_Gating>` closes (ambiguity ≤ 5%) and Phase 2 (Planning) produces `plan.md`, the skill MUST run a spec-approval gate before any `Create*` / `Update*` MCP call.103104Full procedure — required steps, enforcement contract, rationale, spec template, and the verbatim user-facing approval prompt — lives in **[`spec-approval-gate.md`](spec-approval-gate.md)**. Read that file and follow it literally.105106**One-line summary** (the full text lives in the companion file):107> Invoke `sap-writer` → produce `spec.md` → display to user → wait for an **explicit approval keyword** (`승인` / `approve` / `ok` / `proceed` / `go ahead` / `confirmed`). "yes" / "빨리" / "해봐" / silence are NOT approval — loop with revisions. Phase 4 Executor refuses to run if spec.md is missing, unapproved, or modified after approval.108</Spec_Approval_Gate>109110<Session_Trust_Bootstrap>111**MANDATORY — runs at the very start of Phase 1A, BEFORE the module consultant asks the first question.** Invoke `/sc4sap:trust-session` with `parent_skill=sc4sap:create-program` to pre-grant MCP tool + file-op permissions for the entire session. This ensures interview-time MCP calls (consultant SPRO lookups, `SearchObject`, `GetWhereUsed`) and downstream Phase 4–8 activity both run without permission prompts.112113- If `.sc4sap/session-trust.log` already has a line within the last 24h, skip silently.114- **Exception**: `GetTableContents` and `GetSqlQuery` are NEVER auto-approved — they require explicit per-call user consent. See [`../trust-session/SKILL.md`](../trust-session/SKILL.md) Layer 1.115</Session_Trust_Bootstrap>116117<Execution_Mode_Gate>118**MANDATORY — runs between `<Spec_Approval_Gate>` and Phase 4.** After spec approval, the skill prompts the user to pick an execution cadence: `auto` / `manual` / `hybrid`. Persists the choice to `.sc4sap/program/{PROG}/state.json` under `execution_mode`.119120`trust-session` is NOT re-invoked here — it already ran at the start of Phase 1A.121122Full procedure — verbatim mode-prompt text, per-mode semantics, state.json schema (also drives C-2 resume support), and manual-mode phase-transition prompt — lives in **[`execution-mode.md`](execution-mode.md)**. Read that file and follow it literally before dispatching Phase 4.123</Execution_Mode_Gate>124125<Agent_Pipeline>126**The full phase-by-phase pipeline (Phase 0 – Phase 8) lives in [`agent-pipeline.md`](./agent-pipeline.md) in this skill folder.**127128Read that file before dispatching any agent. It is the authoritative source for:129- Phase 0 — SAP Version Preflight130- Phase 1A — Module Interview (`sap-{module}-consultant`, business context)131- Phase 1B — Program Interview (`sap-analyst` + `sap-architect`, technical dimensions)132- Phase 2 — Planning (`sap-planner` + consultants, CBO reuse gate, SPRO lookup)133- Phase 3 — Spec Writing (`sap-writer`)134- Phase 4 — Implementation (`sap-executor`)135- Phase 5 — QA (`sap-qa-tester`, OOP mode)136- Phase 6 — Review (`sap-code-reviewer`, **mandatory**, see `phase6-review.md`)137- Phase 7 — Debug escalation (`sap-debugger`)138- Phase 8 — Completion Report (gated on Phase 6 PASS)139140Do not inline or paraphrase phase logic here — update `agent-pipeline.md` instead so the pipeline stays single-sourced.141</Agent_Pipeline>142143<MCP_Tools_Used>144- `SearchObject` — existence check145- `ListTransports` / `CreateTransport` — transport management146- `GetPackage` — package validation147- `CreateProgram` + `UpdateProgram` — main program148- `CreateInclude` + `UpdateInclude` — all includes (TOP/SEL/CLASS/ALV/PBO/PAI/EVENT/FORM/TEST)149- `CreateScreen` + `UpdateScreen` — custom screens (ALV full mode)150- `CreateGuiStatus` + `UpdateGuiStatus` — PF-Status for custom screens151- `CreateTextElement` + `UpdateTextElement` — text-xxx resources152- `GetAbapSemanticAnalysis` — pre-activation syntax check153- `GetInactiveObjects` — post-activation verification154- `RunUnitTest` / `GetUnitTestResult` — QA (OOP mode)155</MCP_Tools_Used>156157<State_Files>158- `.sc4sap/program/{PROG}/platform.md` — Phase 0 preflight output159- `.sc4sap/program/{PROG}/module-interview.md` — Phase 1A business interview (consultant-led: purpose / reason / company-specific rules / reference assets / standard-SAP alternatives)160- `.sc4sap/program/{PROG}/interview.md` — Phase 1B technical interview (analyst+architect-led: 7 dimensions Q&A log)161- `.sc4sap/program/{PROG}/cbo-context.md` — CBO reuse candidates (written by `<Inventory_Lookups>` / [`inventory-lookups.md`](inventory-lookups.md))162- `.sc4sap/program/{PROG}/customization-context.md` — Z*/Y* BAdI impl / CMOD / form-exit / append reuse candidates (written by `<Inventory_Lookups>` / [`inventory-lookups.md`](inventory-lookups.md))163- `.sc4sap/program/{PROG}/plan.md` — planner output164- `.sc4sap/program/{PROG}/spec.md` — writer output (requires user confirm)165- `.sc4sap/program/{PROG}/state.json` — execution_mode + per-phase status/timing (schema in `execution-mode.md`, drives resume support)166- `.sc4sap/program/{PROG}/review-bucket-{B1|B2|B3|B4}.md` — Phase 6 per-bucket reviews (merged into review.md, see `phase6-buckets.md`)167- `.sc4sap/program/{PROG}/review.md` — Phase 6 consolidated review168- `.sc4sap/program/{PROG}/report.md` — final completion report169- `.sc4sap/program/{PROG}/{spec,report}.html` — optional single-file HTML copies, offered after Phase 8170- `.claude/settings.local.json` — permissions allowlist (written by `/sc4sap:trust-session` during Phase 3.5)171- `.sc4sap/session-trust.log` — audit trail of `trust-session` invocations172</State_Files>173174Task: {{ARGUMENTS}}