| Standard ID | STD-DDL-LOG-001 |
| Common Name | The Black Box Standard |
| Version | 0.2 |
| Status | Ratified — 8 LOCK / 1 REVISE |
| Date | 2026-03-28 |
| Author | Dave Kitchens · Dropdown Logistics |
| Prior Reviews | CR-DDL-AUDITLOG-001 · CR-DDL-AUDITLOG-002 |
| Registry Entries | FRM-0031 (FORMULATEXT) · PTN-0020 (Governed Audit Log) |
| Dependencies | STD-EXCEL-001 · STD-EXCEL-002 · FRM-0031 |
| Origin | AccidentalInsight — GridTactics design session, 2026-03-28 |
| Section | Change | Rationale |
|---|---|---|
| §1 Purpose | Softened ‘automatic’ language | v0.1 overclaimed automation. Operator still declares run date, writes Event, enters Expected. Accurate: reduces dependence on memory. |
| §4.2 Timestamp | Added Run_Date validation formula | Templates should fail fast on bad timestamp format. |
| §6 Errors | Added Scenario 5: external data failure | Broken Power Query or linked CSV is a real production scenario. |
| §6 Errors | Added Scenario 6: blank Run_Date | Stale or blank Run_Date silently corrupts the record. |
| §8 Trust Arc | Snapshot behavior as Phase 2 requirement | Live references acceptable at comfort phase. Frozen snapshots required at reliance phase. |
| §8 Trust Arc | Phase 3 gate added | Evidentiary phase needs declared conditions, not operator vibes. |
| §10 Template | Protection guidance added | Template companion needs explicit protection settings. |
“The difference between a workbook that produces a result and a workbook that can defend a result.”
A DDL workbook used in production must be able to defend its results — without relying on the operator’s memory, without separate narrative documentation, and without macros.
The Governed Audit Log reduces dependence on memory by capturing formula state, results, and timestamps at each production run. It does not eliminate operator involvement — the operator still declares the run date, describes the event, and enters expected values. The LOG automates the capture of formula provenance inside a governed run process.
‘Automatic’ language softened from v0.1. The LOG reduces documentation burden. It does not remove the operator from the process.
Applies to any workbook that meets one or more of the following conditions:
Every workbook governed by this standard must declare its classification in the README tab:
Workbook Type: Operational / Analytical STD-DDL-LOG-001: Required / Recommended / Exempt Trust Phase: Comfort / Reliance / Evidentiary
LOGtbl_Log| Col | Name | Source | Purpose |
|---|---|---|---|
| A | Run_Date | =Config!Run_Date | Frozen operator-declared run date |
| B | Event | Free text | Human-readable description of what ran |
| C | Target_Cell | Text — A1-style ref | Identifies the cell being documented |
| D | Formula_Used | =FORMULATEXT(ref) | Formula as readable text |
| E | Result | =ref to Target_Cell | Value the formula produced this run |
| F | Expected | Operator-entered | Governed expected value. ‘N/A’ if none |
| G | Pass_Fail | =IF(E=F,“PASS”…) | Automated reconciliation check |
| H | Notes | Free text | Context formulas cannot capture |
Columns must appear in the order defined above. Column order is a scanner-compatibility requirement. The Anti-Pattern Scanner reads Col D (Formula_Used) by position. Reordering columns breaks scanner output silently. Any columns added beyond H must be appended to the right and documented in the README.
=NOW() and =TODAY() are explicitly banned as sole timestamp mechanisms in the LOG tab. Both are volatile — they recalculate on every workbook open, silently rewriting every historical timestamp. A log with volatile timestamps is not a log. It is a display.
SETUP:
Config tab, cell B3 (or operator-designated cell)
Named range: Run_Date
Value: operator sets manually before each production run
Format: YYYY-MM-DD text (e.g. 2026-03-28)
VALIDATION (add adjacent to Run_Date on Config tab):
=IF(AND(LEN(Run_Date)=10,
ISNUMBER(DATEVALUE(Run_Date))),
"OK", "FORMAT ERROR — use YYYY-MM-DD")
USAGE IN LOG:
Col A formula: =Config!Run_Date
Result: all LOG rows for this run share the same
intentional, frozen, operator-declared timestamp.If Run_Date is blank or invalid, Col A returns an error. This is intentional — the LOG should not accept a run without a declared date. See §6 Scenario 6.
Before every production run: open Config tab → update Run_Date → confirm validation reads OK → proceed. This is a deliberate governance act. The operator is declaring: “This run happened on this date.” That declaration is itself audit evidence.
FORMULATEXT requires Excel 2013 or later. This is the DDL governed baseline. Pre-2013 environments are out of scope for this standard.
If a workbook must operate in a pre-2013 environment: document the formula manually in Formula_Used as plain text, prefix with “MANUAL: ”, note the environment limitation in Notes.
Legacy fallback is a reduced-assurance exception path. Manual entries are not equivalent to governed automated capture and are not suitable for evidentiary-phase claims without explicit exception documentation.
Six scenarios are explicitly defined. All other error conditions should be logged as-is with a note in the Notes column.
Result: Log the error value as-is (#N/A, #REF!, etc.) Pass_Fail: FAIL (automatic) Notes: "ERROR — investigate before relying on this run" Operator action: Do not distribute results until resolved
Formula_Used: FORMULATEXT returns #N/A Log entry: Record "HARDCODE DETECTED" in Formula_Used Pass_Fail: FAIL — governance finding Notes: "STD-EXCEL-001 violation — hardcode in production cell" Operator action: Replace hardcode before next production run
Target_Cell: Log the anchor cell only (e.g. D7) Formula_Used: FORMULATEXT of the anchor cell Result: Value of the anchor cell Notes: "Spill range: D7# — [N] rows × [M] cols" Rationale: The anchor formula governs the spill.
No special handling required. Run_Date + FORMULATEXT captures formula state per run. Version drift is visible by comparing LOG rows across runs. This is the standard working as designed.
Applies to: broken Power Query, missing linked CSV,
failed external workbook link
Result: Log the error value returned by the target cell
Pass_Fail: FAIL
Notes: "EXTERNAL SOURCE FAILURE — [source name].
Ref ticket: [ticket ID]"
Operator action: Do not distribute. Restore source and re-run.Condition: Config!Run_Date is blank, stale, or invalid format
Col A: Returns error or stale date
Operator action: Stop. Do not proceed with the run.
Update Run_Date. Confirm validation reads OK.
Re-run from the beginning.
Rationale: A run without a declared date cannot be
defended. The LOG row would be misleading.The LOG tab must be designed for scanner compatibility from day one. The Anti-Pattern Scanner and future Excelligence tooling will read LOG tab output to detect formula drift and provenance gaps.
When the scanner gains LOG-reading functionality it can detect version-to-version formula drift, anti-pattern introduction across runs, and formula provenance gaps. This capability is designed in from day one.
This standard is experimental with guardrails. It ships as a comfort layer. Trust builds through sustained use. Phases describe the operator’s relationship with the tool — they are not compliance tiers.
Snapshot behavior is not required at Phase 1. If a formula changes between runs, prior rows may reflect current state rather than historical state. This is a known limitation and is acceptable during the trust-building period.
Phase progression is at operator discretion. Declare the phase in the README tab.
| Standard / Entry | Relationship |
|---|---|
| STD-EXCEL-001 | The audit log is the enforcement layer for formula governance. STD-EXCEL-001 defines what good formulas look like. This standard proves that good formulas were actually used. |
| STD-EXCEL-002 | Any workbook classified as Operational must have a LOG tab. The INPUT → LOGIC → OUTPUT architecture is made traceable by making LOGIC visible and timestamped. |
| FRM-0031 | FORMULATEXT is the primary tool of the LOG tab. The LOG depends on FRM-0031 as its capture mechanism. |
| PTN-0020 | PTN-0020 remains in the registry as the reference implementation. Pattern describes. This standard mandates. |
Tab: LOG
Table: tbl_Log
Config: Run_Date named range on Config tab
Validation: IFERROR format check adjacent to Run_Date
Protection: Sheet protection ON
All columns locked
Unlock only: active entry row (first empty row)
Workbook protection: structure locked
Columns: A–H per §3.2 in defined order
Scanner cols: Any additions must be appended after H
Document in README: column name, purpose, added dateA canonical template workbook accompanies this standard. All new production workbooks should begin from the template. The template includes the LOG tab pre-configured, the Config tab with Run_Date named range and validation formula, and README tab with the operator declaration fields.