Skip to content

memory: Scheduled Workflow Null-Result Hygiene Scan — Amara tier-1 promotion#690

Merged
AceHack merged 4 commits intomainfrom
memory/amara-class-name-scheduled-workflow-null-result-hygiene-scan-2026-04-28
Apr 30, 2026
Merged

memory: Scheduled Workflow Null-Result Hygiene Scan — Amara tier-1 promotion#690
AceHack merged 4 commits intomainfrom
memory/amara-class-name-scheduled-workflow-null-result-hygiene-scan-2026-04-28

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented Apr 28, 2026

Amara reviewed Otto's cross-workflow audit insight + promoted the discipline from special case to formal tier-1 cheap-prevention tick-open scan after the class found B-0085 + B-0087 in its first hour. Adds the Promotion section + 6 classification labels + tiny-blade caveat (40% local rate is not global rate). Updates MEMORY.md index entry to surface promoted class name. Folds into task #269 phase 3 (NEW — was special-case).

Copilot AI review requested due to automatic review settings April 28, 2026 20:23
@AceHack AceHack enabled auto-merge (squash) April 28, 2026 20:23
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Promotes the “workflow null-result” audit discipline into a tier-1, tick-open, cheap-prevention scan and updates the memory index to surface the promoted class name.

Changes:

  • Added a “Promotion to tier-1” section defining the Scheduled Workflow Null-Result Hygiene Scan, its rule, and classification labels.
  • Updated memory/MEMORY.md index entry to include the promoted class name and summarize the tier-1 promotion.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
memory/feedback_incomplete_source_set_regeneration_hazard_and_workflow_null_result_audit_amara_2026_04_28.md Adds the tier-1 promotion section, labels, and calibration note for scheduled-workflow null-result hygiene.
memory/MEMORY.md Updates the index entry to reflect the promoted class name and the new tier-1 scan framing.

Comment thread memory/MEMORY.md Outdated
AceHack added a commit that referenced this pull request Apr 28, 2026
Three Copilot P2 findings on PR #690:
1. Bold class name 'Scheduled Workflow Null-Result Hygiene Scan'
   was split across newlines — kept on one line for cross-parser
   bold-emphasis safety.
2. 'every gh run list result must sort into one' was ambiguous
   — clarified to 'every empty/failure result for [a workflow]
   must sort into ONE of the labels' with explicit framing that
   labels classify the workflow's null/failure situation, not
   individual runs.
3. MEMORY.md index summary 'gh run list []' read like a command
   invocation with [] arguments — now mirrors the underlying
   memory phrasing 'gh run list --workflow=<path> returning [] on
   existing workflow'.
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: be9a88a00f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

AceHack added a commit that referenced this pull request Apr 28, 2026
Three Copilot P2 findings on PR #690:
1. Bold class name 'Scheduled Workflow Null-Result Hygiene Scan'
   was split across newlines — kept on one line for cross-parser
   bold-emphasis safety.
2. 'every gh run list result must sort into one' was ambiguous
   — clarified to 'every empty/failure result for [a workflow]
   must sort into ONE of the labels' with explicit framing that
   labels classify the workflow's null/failure situation, not
   individual runs.
3. MEMORY.md index summary 'gh run list []' read like a command
   invocation with [] arguments — now mirrors the underlying
   memory phrasing 'gh run list --workflow=<path> returning [] on
   existing workflow'.
Copilot AI review requested due to automatic review settings April 28, 2026 20:36
@AceHack AceHack force-pushed the memory/amara-class-name-scheduled-workflow-null-result-hygiene-scan-2026-04-28 branch from be9a88a to eddb4da Compare April 28, 2026 20:36
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

AceHack added a commit that referenced this pull request Apr 28, 2026
Three Copilot P2 findings on PR #690:
1. Bold class name 'Scheduled Workflow Null-Result Hygiene Scan'
   was split across newlines — kept on one line for cross-parser
   bold-emphasis safety.
2. 'every gh run list result must sort into one' was ambiguous
   — clarified to 'every empty/failure result for [a workflow]
   must sort into ONE of the labels' with explicit framing that
   labels classify the workflow's null/failure situation, not
   individual runs.
3. MEMORY.md index summary 'gh run list []' read like a command
   invocation with [] arguments — now mirrors the underlying
   memory phrasing 'gh run list --workflow=<path> returning [] on
   existing workflow'.
@AceHack AceHack force-pushed the memory/amara-class-name-scheduled-workflow-null-result-hygiene-scan-2026-04-28 branch from eddb4da to f1f28e3 Compare April 28, 2026 20:41
AceHack added a commit that referenced this pull request Apr 28, 2026
…ew-Thread Punchlist (Amara naming 2026-04-28T20:34Z)

Two new Amara-named classes from this arc, each passing the
5-step control of the Class-Count Validity Drift discipline
(worked example + mechanism + control + scope + falsifier):

1. Class-Count Validity Drift (NEW standalone memory):
   memory/feedback_class_count_validity_drift_amara_meta_class_2026_04_28.md.
   Meta-class catching the failure mode where a review loop
   treats count of named classes/updates/artifacts as evidence
   the protocol is correct, rather than requiring each class to
   earn reuse via falsifier-preserving application.
   Worked example: my prior insight 'class-naming is now a
   recognized ferry-input genre... reusable contract' drifting
   toward halo-effect. Aaron's terse challenge ('she is 100%
   right here' on Amara's earlier SD-9 caveat) interrupted the
   drift before it compounded.
   External lineage: confirmation-bias literature + Popper
   falsification.
   Tiny blade caveat: 'reinforcement' vs 'challenge' — Aaron's
   terse asides interrupt drift, don't reinforce framing. Word
   choice matters.

2. Blocked-GreenCI Review-Thread Punchlist (compositional class
   added to existing Outdated-Review-Thread memory):
   memory/feedback_outdated_review_threads_block_merge_resolve_explicitly_after_force_push_2026_04_27.md.
   Definition: PR shows green CI but remains BLOCKED because
   unresolved review threads (not failing checks) are the active
   merge gate.
   5-step control:
     1. List unresolved threads
     2. Classify: real / outdated / phantom-stale
     3. Fix real findings
     4. Reply with commit-SHA / evidence for outdated+phantom
     5. Resolve explicitly via GraphQL or UI
   Worked example: PRs #688/#690 unblocked deterministically
   this arc (~5 min/PR; no 'mysterious BLOCKED' investigation).
   SD-9 calibration on Copilot: low false-positive rate this arc
   is local evidence, not global proof. Pattern (small sample):
   P1 = correctness bugs, P2 = wording cleanup, phantom-stale
   exists but less common.

Both classes pass Class-Count Validity Drift's 5-step control:
worked example present, mechanism explained, control prescribed,
scope local-Zeta-bounded, falsifier explicit. Earned reuse;
not just activity.

MEMORY.md index updated with 2 new entries; paired-edit marker
bumped to PR #692. No code-surface changes.
AceHack added a commit that referenced this pull request Apr 28, 2026
…igger label + scope Phase-1 to scheduled (3 PR #690 review threads)

Three real findings on PR #690 review:

1. Codex P2 (line 223): Phase 1 said 'walk all .github/workflows/*.yml'
   but the class promotion is for SCHEDULED workflows specifically.
   Phase 1 scope corrected — non-scheduled workflows have different
   null-result semantics and require their own audit class.

2. Copilot (line 235): 6 labels didn't cover all 6 diagnostic questions.
   Specifically Q5 'event-trigger compatible' was missing.
   Now 7 labels with 1:1 mapping to Q1-Q6 + uncaptured-gap:
     - too-new-to-fire (Q1)
     - non-default-branch (Q2)
     - disabled (Q3)  [split from prior 'disabled / non-default-branch']
     - cron mismatch (Q4)
     - event-trigger incompatible (Q5)  [NEW]
     - wrong workflow identifier (Q6)
     - uncaptured gap (file new B-NNNN)

3. Copilot (line 192): 'disabled / non-default-branch' combined
   label bundled two distinct root causes that were separated in
   the diagnostic questions. Split per (1) above.

MEMORY.md index summary updated: '6 labels' → '7 labels (1 per
diagnostic question + uncaptured-gap); audit scope is scheduled
workflows only'.
Copilot AI review requested due to automatic review settings April 28, 2026 20:53
AceHack added a commit that referenced this pull request Apr 28, 2026
…ew-Thread Punchlist (#692)

* memory(meta-class): Class-Count Validity Drift + Blocked-GreenCI Review-Thread Punchlist (Amara naming 2026-04-28T20:34Z)

Two new Amara-named classes from this arc, each passing the
5-step control of the Class-Count Validity Drift discipline
(worked example + mechanism + control + scope + falsifier):

1. Class-Count Validity Drift (NEW standalone memory):
   memory/feedback_class_count_validity_drift_amara_meta_class_2026_04_28.md.
   Meta-class catching the failure mode where a review loop
   treats count of named classes/updates/artifacts as evidence
   the protocol is correct, rather than requiring each class to
   earn reuse via falsifier-preserving application.
   Worked example: my prior insight 'class-naming is now a
   recognized ferry-input genre... reusable contract' drifting
   toward halo-effect. Aaron's terse challenge ('she is 100%
   right here' on Amara's earlier SD-9 caveat) interrupted the
   drift before it compounded.
   External lineage: confirmation-bias literature + Popper
   falsification.
   Tiny blade caveat: 'reinforcement' vs 'challenge' — Aaron's
   terse asides interrupt drift, don't reinforce framing. Word
   choice matters.

2. Blocked-GreenCI Review-Thread Punchlist (compositional class
   added to existing Outdated-Review-Thread memory):
   memory/feedback_outdated_review_threads_block_merge_resolve_explicitly_after_force_push_2026_04_27.md.
   Definition: PR shows green CI but remains BLOCKED because
   unresolved review threads (not failing checks) are the active
   merge gate.
   5-step control:
     1. List unresolved threads
     2. Classify: real / outdated / phantom-stale
     3. Fix real findings
     4. Reply with commit-SHA / evidence for outdated+phantom
     5. Resolve explicitly via GraphQL or UI
   Worked example: PRs #688/#690 unblocked deterministically
   this arc (~5 min/PR; no 'mysterious BLOCKED' investigation).
   SD-9 calibration on Copilot: low false-positive rate this arc
   is local evidence, not global proof. Pattern (small sample):
   P1 = correctness bugs, P2 = wording cleanup, phantom-stale
   exists but less common.

Both classes pass Class-Count Validity Drift's 5-step control:
worked example present, mechanism explained, control prescribed,
scope local-Zeta-bounded, falsifier explicit. Earned reuse;
not just activity.

MEMORY.md index updated with 2 new entries; paired-edit marker
bumped to PR #692. No code-surface changes.

* fix(outdated-thread memory): rephrase '+' line-start (markdown-list-marker)

Copilot P2 finding on PR #692: line 136 starts with '+ Outdated...'
which Markdown parses as unordered-list marker. Replaced with
'combined with' to keep the prose intent without tripping
markdownlint.
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 33a772929d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

Comment thread memory/MEMORY.md Outdated
AceHack added a commit that referenced this pull request Apr 28, 2026
…T20:43Z names positive complement of Class-Count Validity Drift

The pair forms the validation discipline:

- Class-Count Validity Drift (failure mode): treating count
  of named classes as evidence the protocol is correct.
- Prediction-Bearing Class Reuse (success mode): treating
  prediction-bearing trajectory data + control reuse + detector
  reuse + falsifier survival as falsifier-passing evidence.

Definition (Amara verbatim): a named class earns reuse when it
makes a concrete time-exposed prediction or control recommendation
and later substrate evidence moves as predicted (or the control
prevents/repairs an incident).

Four bead-earning mechanisms (any one = one bead):
1. Prediction-bearing example (today's SASTID 28/30 → 29/30)
2. Future incident repaired/prevented (control applied + worked)
3. Detector/control reuse (same class catches a 2nd occurrence)
4. Explicit falsifier survival (named test passed)

Tiny-blade precision (Amara prescribed): 'earns one reuse bead'
not 'earns reuse'. Single data point is signal; multiple
repetitions make it a pattern.

Worked-bead audit for the 11 classes named/extended this arc:
- 1 bead each: Self-Healing Metrics, Chronological Insertion
  Polarity Error, Blocked-GreenCI Punchlist, Advisory
  Enforcement Workflow Gap, Incomplete Source-Set Hazard,
  Class-Count Validity Drift
- 2 beads: Workflow Null-Result Audit Signal (B-0085 + B-0087),
  Outdated Review-Thread Merge Gate Residue (PR #684 + #688/#690)
- 0 beads: Scheduled Workflow Hygiene Scan (post-promotion),
  Class-Naming Ferry Protocol + SD-9 (meta), Prediction-Bearing
  Class Reuse (this row)

External lineage: Popper falsifiability + Bayesian update over
base rate + confirmation-bias-needs-failure-cases. All cited.

The class itself starts at 0 beads — the pattern names the
act of validation, but no validation event has fired for the
pattern itself yet.

MEMORY.md index updated; paired-edit marker bumped to PR #693.
AceHack added a commit that referenced this pull request Apr 28, 2026
Three Copilot P2 findings on PR #690:
1. Bold class name 'Scheduled Workflow Null-Result Hygiene Scan'
   was split across newlines — kept on one line for cross-parser
   bold-emphasis safety.
2. 'every gh run list result must sort into one' was ambiguous
   — clarified to 'every empty/failure result for [a workflow]
   must sort into ONE of the labels' with explicit framing that
   labels classify the workflow's null/failure situation, not
   individual runs.
3. MEMORY.md index summary 'gh run list []' read like a command
   invocation with [] arguments — now mirrors the underlying
   memory phrasing 'gh run list --workflow=<path> returning [] on
   existing workflow'.
AceHack added a commit that referenced this pull request Apr 28, 2026
…igger label + scope Phase-1 to scheduled (3 PR #690 review threads)

Three real findings on PR #690 review:

1. Codex P2 (line 223): Phase 1 said 'walk all .github/workflows/*.yml'
   but the class promotion is for SCHEDULED workflows specifically.
   Phase 1 scope corrected — non-scheduled workflows have different
   null-result semantics and require their own audit class.

2. Copilot (line 235): 6 labels didn't cover all 6 diagnostic questions.
   Specifically Q5 'event-trigger compatible' was missing.
   Now 7 labels with 1:1 mapping to Q1-Q6 + uncaptured-gap:
     - too-new-to-fire (Q1)
     - non-default-branch (Q2)
     - disabled (Q3)  [split from prior 'disabled / non-default-branch']
     - cron mismatch (Q4)
     - event-trigger incompatible (Q5)  [NEW]
     - wrong workflow identifier (Q6)
     - uncaptured gap (file new B-NNNN)

3. Copilot (line 192): 'disabled / non-default-branch' combined
   label bundled two distinct root causes that were separated in
   the diagnostic questions. Split per (1) above.

MEMORY.md index summary updated: '6 labels' → '7 labels (1 per
diagnostic question + uncaptured-gap); audit scope is scheduled
workflows only'.
@AceHack AceHack force-pushed the memory/amara-class-name-scheduled-workflow-null-result-hygiene-scan-2026-04-28 branch from 33a7729 to a4fbb8a Compare April 28, 2026 20:59
AceHack added a commit that referenced this pull request Apr 28, 2026
…tive complement of Class-Count Validity Drift (#693)

* memory(class-pair): Prediction-Bearing Class Reuse — Amara 2026-04-28T20:43Z names positive complement of Class-Count Validity Drift

The pair forms the validation discipline:

- Class-Count Validity Drift (failure mode): treating count
  of named classes as evidence the protocol is correct.
- Prediction-Bearing Class Reuse (success mode): treating
  prediction-bearing trajectory data + control reuse + detector
  reuse + falsifier survival as falsifier-passing evidence.

Definition (Amara verbatim): a named class earns reuse when it
makes a concrete time-exposed prediction or control recommendation
and later substrate evidence moves as predicted (or the control
prevents/repairs an incident).

Four bead-earning mechanisms (any one = one bead):
1. Prediction-bearing example (today's SASTID 28/30 → 29/30)
2. Future incident repaired/prevented (control applied + worked)
3. Detector/control reuse (same class catches a 2nd occurrence)
4. Explicit falsifier survival (named test passed)

Tiny-blade precision (Amara prescribed): 'earns one reuse bead'
not 'earns reuse'. Single data point is signal; multiple
repetitions make it a pattern.

Worked-bead audit for the 11 classes named/extended this arc:
- 1 bead each: Self-Healing Metrics, Chronological Insertion
  Polarity Error, Blocked-GreenCI Punchlist, Advisory
  Enforcement Workflow Gap, Incomplete Source-Set Hazard,
  Class-Count Validity Drift
- 2 beads: Workflow Null-Result Audit Signal (B-0085 + B-0087),
  Outdated Review-Thread Merge Gate Residue (PR #684 + #688/#690)
- 0 beads: Scheduled Workflow Hygiene Scan (post-promotion),
  Class-Naming Ferry Protocol + SD-9 (meta), Prediction-Bearing
  Class Reuse (this row)

External lineage: Popper falsifiability + Bayesian update over
base rate + confirmation-bias-needs-failure-cases. All cited.

The class itself starts at 0 beads — the pattern names the
act of validation, but no validation event has fired for the
pattern itself yet.

MEMORY.md index updated; paired-edit marker bumped to PR #693.

* memory(class-validation-trio): add Class Validation Beads accounting + Popper-vs-beads separation tiny-blade

Amara 2026-04-28T20:48Z named the bead-count itself as a formal
accounting system: **Class Validation Beads**.

Critical separation preserved (Amara prescribed):
  External lineage (Popper falsifiability) supplies the WHY —
  why falsifier-passing observation counts as evidence. Cite
  Popper, confirmation-bias literature, Bayesian update.

  Bead accounting (factory-local) is the HOW — operational
  metric for tracking validation accumulation INSIDE Zeta.
  NOT externally-anchored; only the underlying philosophical
  claim needs external lineage.

Aaron 2026-04-28T20:48Z prefatory ask: 'we are going to need
external human lineage research and anchoring' — connects to
B-0060 (P1 human-lineage external-anchor backfill). The bead
system is internal accounting; the underlying epistemic
machinery (falsifiability, confirmation bias, Bayesian update)
needs external lineage.

The trio is now formally:
- Class-Count Validity Drift   (failure mode catcher)
- Prediction-Bearing Class Reuse (success mode path)
- Class Validation Beads        (factory-local accounting)

Together they form the encoding-validation discipline: catch
naming-volume-as-evidence drift + name the positive validation
path + track validation-event accumulation without pretending
it is proof.

Bead-count states explicit:
  0 beads = named, not yet validated (honest middle state)
  1 bead  = local falsifier-passing signal
  2-3     = recurring signal, starting to look pattern-like
  N >> 3  = established factory substrate

What this is NOT:
  - NOT proof (N beads = N falsifier-passing observations,
    not N proofs).
  - NOT a global rate.
  - NOT externally-anchored (only the philosophical claim is).
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a4fbb8aa09

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copilot AI review requested due to automatic review settings April 28, 2026 21:04
AceHack added a commit that referenced this pull request Apr 28, 2026
Three Copilot P2 findings on PR #690:
1. Bold class name 'Scheduled Workflow Null-Result Hygiene Scan'
   was split across newlines — kept on one line for cross-parser
   bold-emphasis safety.
2. 'every gh run list result must sort into one' was ambiguous
   — clarified to 'every empty/failure result for [a workflow]
   must sort into ONE of the labels' with explicit framing that
   labels classify the workflow's null/failure situation, not
   individual runs.
3. MEMORY.md index summary 'gh run list []' read like a command
   invocation with [] arguments — now mirrors the underlying
   memory phrasing 'gh run list --workflow=<path> returning [] on
   existing workflow'.
AceHack added a commit that referenced this pull request Apr 28, 2026
…igger label + scope Phase-1 to scheduled (3 PR #690 review threads)

Three real findings on PR #690 review:

1. Codex P2 (line 223): Phase 1 said 'walk all .github/workflows/*.yml'
   but the class promotion is for SCHEDULED workflows specifically.
   Phase 1 scope corrected — non-scheduled workflows have different
   null-result semantics and require their own audit class.

2. Copilot (line 235): 6 labels didn't cover all 6 diagnostic questions.
   Specifically Q5 'event-trigger compatible' was missing.
   Now 7 labels with 1:1 mapping to Q1-Q6 + uncaptured-gap:
     - too-new-to-fire (Q1)
     - non-default-branch (Q2)
     - disabled (Q3)  [split from prior 'disabled / non-default-branch']
     - cron mismatch (Q4)
     - event-trigger incompatible (Q5)  [NEW]
     - wrong workflow identifier (Q6)
     - uncaptured gap (file new B-NNNN)

3. Copilot (line 192): 'disabled / non-default-branch' combined
   label bundled two distinct root causes that were separated in
   the diagnostic questions. Split per (1) above.

MEMORY.md index summary updated: '6 labels' → '7 labels (1 per
diagnostic question + uncaptured-gap); audit scope is scheduled
workflows only'.
@AceHack AceHack force-pushed the memory/amara-class-name-scheduled-workflow-null-result-hygiene-scan-2026-04-28 branch from a4fbb8a to 8dc5147 Compare April 28, 2026 21:05
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

AceHack added a commit that referenced this pull request Apr 28, 2026
…28T21:10Z

Amara's tighter operational rule for the bead audit:

  Count only `Resolved '<path>' using previous resolution`
  as a rerere cache-hit bead. `Recorded preimage` and
  `Recorded resolution` are cache-write events: they create
  pending bead opportunities but do not themselves validate
  reuse.

Background — applied to live evidence:

Otto over-attributed beads on the restart sequence, claiming
'3 cache-hit observations' when the actual rerere log lines
were 1 cache-hit + 3 cache-writes. Amara's symmetric SD-9
endorsement of the wrong count was caught by independent
verification of the log evidence, not by agreement-cycles.

Corrected verified beads: 1 cache-hit (PR #693 commit 1).
Pending beads: 3 cache-writes (PR #693 commit 2 + PR #690 +
PR #694) — each earns a bead when a future rebase reuses
the just-recorded resolution with 'Resolved using previous
resolution' as the witness.

Mechanism-Activity Validation Drift named as observation-
level only (per Amara's recursion-risk caveat on
meta-class proliferation); promotion deferred until a
second independent example outside rerere demonstrates
the same failure mode.

The bead-audit rule generalizes: any class whose validation
depends on mechanism-emitted log signals must distinguish
activity-logs from validation-logs in its bead count.
AceHack added 3 commits April 30, 2026 13:57
…— Amara promoted audit to tier-1 cheap-prevention scan

Amara 2026-04-28T20:18Z reviewed Otto's cross-workflow audit
insight + promoted the discipline from special case to formal
tier-1 cheap-prevention tick-open scan, after the class found
B-0085 + B-0087 in its first hour.

Promoted class name: Scheduled Workflow Null-Result Hygiene Scan.

Tier-1 rule (Amara verbatim):
  At tick-open, enumerate scheduled workflows and classify
  every null/failure result. No unclassified scheduled workflow
  silence is allowed.

Six classification labels for every gh run list result:
- known row (B-NNNN cited)
- too-new-to-fire
- disabled / non-default-branch
- cron mismatch
- wrong workflow identifier
- uncaptured gap (file new B-NNNN row this tick)

Tiny-blade caveat (Amara distinction):
  '"nothing else found" is not proof the workflow level is
  clean; it is proof the current audited scheduled-workflow
  surface has no uncaptured gaps under this lens.'

The 40% gap rate observed this arc is local signal, not global
rate. Hypothesis until repeated across other workflow classes.

Phase mapping for task #269:
- Phase 1: walk all workflows + classify nulls/failures
- Phase 2: skill summary + auto-file uncaptured-gap rows
- Phase 3: tick-open hook (NEW promotion — was special-case)

Extends existing memory file with the tier-1 promotion section
+ updates MEMORY.md index entry to surface the promoted class
name + paired-edit marker bumped.
Three Copilot P2 findings on PR #690:
1. Bold class name 'Scheduled Workflow Null-Result Hygiene Scan'
   was split across newlines — kept on one line for cross-parser
   bold-emphasis safety.
2. 'every gh run list result must sort into one' was ambiguous
   — clarified to 'every empty/failure result for [a workflow]
   must sort into ONE of the labels' with explicit framing that
   labels classify the workflow's null/failure situation, not
   individual runs.
3. MEMORY.md index summary 'gh run list []' read like a command
   invocation with [] arguments — now mirrors the underlying
   memory phrasing 'gh run list --workflow=<path> returning [] on
   existing workflow'.
…igger label + scope Phase-1 to scheduled (3 PR #690 review threads)

Three real findings on PR #690 review:

1. Codex P2 (line 223): Phase 1 said 'walk all .github/workflows/*.yml'
   but the class promotion is for SCHEDULED workflows specifically.
   Phase 1 scope corrected — non-scheduled workflows have different
   null-result semantics and require their own audit class.

2. Copilot (line 235): 6 labels didn't cover all 6 diagnostic questions.
   Specifically Q5 'event-trigger compatible' was missing.
   Now 7 labels with 1:1 mapping to Q1-Q6 + uncaptured-gap:
     - too-new-to-fire (Q1)
     - non-default-branch (Q2)
     - disabled (Q3)  [split from prior 'disabled / non-default-branch']
     - cron mismatch (Q4)
     - event-trigger incompatible (Q5)  [NEW]
     - wrong workflow identifier (Q6)
     - uncaptured gap (file new B-NNNN)

3. Copilot (line 192): 'disabled / non-default-branch' combined
   label bundled two distinct root causes that were separated in
   the diagnostic questions. Split per (1) above.

MEMORY.md index summary updated: '6 labels' → '7 labels (1 per
diagnostic question + uncaptured-gap); audit scope is scheduled
workflows only'.
@AceHack AceHack force-pushed the memory/amara-class-name-scheduled-workflow-null-result-hygiene-scan-2026-04-28 branch from 8dc5147 to cbc541e Compare April 30, 2026 17:57
…ew fixes — label cardinality 7→8, disabled-workflow criterion repo-activity-not-file-age

Addresses 4 P2 Copilot review threads on PR #690:

1. Label cardinality inconsistency — Phase 1 said 7-label set but the
   classification section enumerates 8 labels (known-row + Q1-Q6 +
   uncaptured-gap). Aligned to 8-label terminology in both the body
   and the MEMORY.md index entry.

2. Disabled-workflow criterion error — text said '60+ days no commits
   to the workflow' but GitHub's documented rule is '60 days of no
   repository activity'. Corrected in both occurrences (diagnostic
   question Q3 and classification label) with explicit note that the
   criterion is repo-level, NOT workflow-file-age.

Substrate accuracy correction; underlying classes + tier-1 promotion
unchanged. Aligns text with how Phase 1 implementations should read
the rule.
Copilot AI review requested due to automatic review settings April 30, 2026 18:01
AceHack added a commit that referenced this pull request Apr 30, 2026
…28T21:10Z

Amara's tighter operational rule for the bead audit:

  Count only `Resolved '<path>' using previous resolution`
  as a rerere cache-hit bead. `Recorded preimage` and
  `Recorded resolution` are cache-write events: they create
  pending bead opportunities but do not themselves validate
  reuse.

Background — applied to live evidence:

Otto over-attributed beads on the restart sequence, claiming
'3 cache-hit observations' when the actual rerere log lines
were 1 cache-hit + 3 cache-writes. Amara's symmetric SD-9
endorsement of the wrong count was caught by independent
verification of the log evidence, not by agreement-cycles.

Corrected verified beads: 1 cache-hit (PR #693 commit 1).
Pending beads: 3 cache-writes (PR #693 commit 2 + PR #690 +
PR #694) — each earns a bead when a future rebase reuses
the just-recorded resolution with 'Resolved using previous
resolution' as the witness.

Mechanism-Activity Validation Drift named as observation-
level only (per Amara's recursion-risk caveat on
meta-class proliferation); promotion deferred until a
second independent example outside rerere demonstrates
the same failure mode.

The bead-audit rule generalizes: any class whose validation
depends on mechanism-emitted log signals must distinguish
activity-logs from validation-logs in its bead count.
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cbc541ef9c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c77fa7ccb2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@AceHack AceHack merged commit 0ba1eaf into main Apr 30, 2026
27 checks passed
@AceHack AceHack deleted the memory/amara-class-name-scheduled-workflow-null-result-hygiene-scan-2026-04-28 branch April 30, 2026 18:05
AceHack added a commit that referenced this pull request Apr 30, 2026
…Rerere Conflict-Resolution Cache Dividend (#694)

* memory(post-interruption-pair): Post-Abort Dirty-Branch Resumption + Rerere Conflict-Resolution Cache Dividend (Amara naming 2026-04-28T20:55Z + tighter-phrasing 21:00Z)

Two new Amara-named classes paired from this session's Aaron-stop +
max-mode restart sequence:

1. Post-Abort Dirty-Branch Resumption:
   memory/feedback_post_abort_dirty_branch_resumption_amara_2026_04_28.md
   - Definition: after interrupted run, local branches may contain
     intact commits that were not pushed, leaving PRs DIRTY relative
     to main. Recovery requires inventory before new work, then
     serialized rebase/push/CI verification.
   - 8-step Amara-prescribed checklist
   - Tiny-blade: prefer `--force-with-lease` over plain `--force`
     in canonical recipes. Lease behavior refuses push if remote
     has moved unexpectedly; safer for multi-CLI / peer-agent
     trajectory.

2. Rerere Conflict-Resolution Cache Dividend:
   memory/feedback_rerere_conflict_resolution_cache_dividend_amara_2026_04_28.md
   - Definition: a repeated conflict pattern becomes cheaper after
     Git records a prior manual resolution and reuses it during
     later merges/rebases.
   - **Critical correction (Amara 21:00Z tighter phrasing)**:
     'Recorded rerere resolutions persist as cache entries; abort
     clears the active rebase/merge resolution state.' NOT
     'persistent cache survives abort' — that overclaims the
     boundary.
   - The wrong framing: 'previous abort taught rerere'. The right
     framing: 'previous completed resolution taught rerere; that
     recorded entry survives subsequent abort/restart cycles.'

Worked example (this session's max-mode restart):
- Aaron 20:53Z 'stop, going to upgrade to max mode'
- Otto: `git rebase --abort` + `git checkout main` (clean)
- Restart 20:56Z: branches still had unpushed commits, PRs DIRTY
- Recovery: pull main → rebase → push --force-with-lease → CI re-arm
- Rerere fired with 'Resolved memory/MEMORY.md using previous
  resolution' — recorded entries from earlier successful rebases
  this arc applied to the post-abort rebase

Both classes earn 1 bead each via worked example this session.
Both cross-reference each other.

Bead audit overall this arc — explicit count per Class Validation
Beads system landed in PR #693:
- 6 classes at 1+ beads (this pair adds 2 more 1-bead classes)
- Class-Naming Ferry Protocol still at 0 beads (meta-class; no
  direct validation event)
- Prediction-Bearing Class Reuse + Class Validation Beads still
  at 0 beads (the validation system itself hasn't been
  externally validated yet)

MEMORY.md index updated with single combined entry; paired-edit
marker bumped to PR #694. No code-surface changes.

* memory(rerere-cache-dividend): add bead-audit rule per Amara 2026-04-28T21:10Z

Amara's tighter operational rule for the bead audit:

  Count only `Resolved '<path>' using previous resolution`
  as a rerere cache-hit bead. `Recorded preimage` and
  `Recorded resolution` are cache-write events: they create
  pending bead opportunities but do not themselves validate
  reuse.

Background — applied to live evidence:

Otto over-attributed beads on the restart sequence, claiming
'3 cache-hit observations' when the actual rerere log lines
were 1 cache-hit + 3 cache-writes. Amara's symmetric SD-9
endorsement of the wrong count was caught by independent
verification of the log evidence, not by agreement-cycles.

Corrected verified beads: 1 cache-hit (PR #693 commit 1).
Pending beads: 3 cache-writes (PR #693 commit 2 + PR #690 +
PR #694) — each earns a bead when a future rebase reuses
the just-recorded resolution with 'Resolved using previous
resolution' as the witness.

Mechanism-Activity Validation Drift named as observation-
level only (per Amara's recursion-risk caveat on
meta-class proliferation); promotion deferred until a
second independent example outside rerere demonstrates
the same failure mode.

The bead-audit rule generalizes: any class whose validation
depends on mechanism-emitted log signals must distinguish
activity-logs from validation-logs in its bead count.

* memory(prediction-bearing-class-reuse): expand External lineage with stop-mythology discipline + tighter wording (Aaron 2026-04-28T21:15Z directive + Amara 21:14Z tiny-blade)

Aaron directive: 'we also stop mythology with human intellectual
lineage research and anchors.' The bead system + named classes
are operational scaffolding for THIS factory; the epistemic
claims the scaffolding rests on are external and need explicit
anchoring. Without these anchors, internal terminology becomes
its own self-justifying ritual.

Expanded External lineage section with specific cited works:

Falsifiability (Popper):
  - Logic of Scientific Discovery (1934 / 1959 English)
  - Conjectures and Refutations (1963)

Confirmation bias (Wason / Klayman & Ha):
  - Wason 1960 (Quarterly Journal of Experimental Psychology)
  - Klayman & Ha 1987 (Psychological Review) — positive test
    strategy as failure mode bead audits guard against

Bayesian (factory-local heuristic, NOT externally-anchored):
  - Bead-count thresholds are operational choices, not derived
    from formal Bayesian model. Don't claim Bayesian rigor for
    the threshold values.

Stop-mythology rule:
  - Bead count statements: factory-local, no citation needed
  - Why-beads-count-as-evidence claims: cite external lineage
  - Generalized claims: SD-9 guardrail (substrate + lineage +
    falsifier)

Composes with B-0060 (Human-Lineage External-Anchor Backfill,
P1) and task #292 (Aurora measurement hygiene).

Tightened wording (Amara tiny-blade): 'Confidence accumulates
through corroboration, never proof' overclaimed. Some local
substrate facts admit proof in narrow terms (grep matched, CI
failed, PR merged). Safer canonical wording:

  'Confidence in reusable classes accumulates through
   corroboration, not proof-by-count.'

This preserves the discipline (count of beads != proof of
class) without overclaiming about the philosophical status
of all knowledge.

Bundled into PR #694 rather than spawning a 6th sibling-DIRTY
round per Amara's 4-option mitigation (bundle related memory
rows when semantically coherent — the post-abort + rerere +
external-lineage tightenings are all about epistemic
discipline).

* memory(class-validation): add Falsification Asymmetry + Bead Farming/Goodhart Risk guardrails (Gemini Deep Think 2026-04-28T21:18Z + Amara endorsed)

Aaron forwarded a Gemini Deep Think review + Amara's synthesis.
Two new guardrails accepted into the bead system to prevent it
from becoming its own monotonic mythology:

1. Falsification Asymmetry (Gemini-named):
   - bead system must not be monotonic
   - high-bead class can still be broken by a hard falsifier
   - failure response: reset / bifurcate / retire
   - external lineage: Popper — corroboration is not proof;
     validation is additive, falsification is multiplicative
     by zero

2. Bead Farming / Goodhart Risk (Gemini-named):
   - synthetic friction (engineer scenarios to harvest beads)
   - retrofit narratives (claim bead for unrelated work)
   - bead-target prioritization over actual factory value
   - external lineage: Goodhart 1975 + Strathern 1997 +
     Campbell 1976 — when a measure becomes a target it
     ceases to be a good measure
   - detection: counterfactual test, action-shape test,
     synthetic-friction test
   - discipline: 'a bead must strictly represent the
     class/mechanism CAUSALLY steering the outcome'

Unified canonical rule (Aaron 21:15Z + Amara/Gemini synthesis):
  'A bead requires validation, not activity.
   A bead count increases confidence, not immunity.
   Hard falsifiers can override bead counts.
   Bead metrics must be guarded against Goodharting.'

Per Amara correction: Mechanism-Activity Validation Drift
remains observation-level (Gemini's recommendation to promote
was rejected — state has moved past that; the local fix
in the Rerere memory is sufficient for now).

Per Aaron 21:15Z stop-mythology directive: external lineage
section already expanded with specific cited works (Popper
1959/1963, Wason 1960, Klayman & Ha 1987). Added: Goodhart
1975, Strathern 1997, Campbell 1976.

Frontmatter description updated with the four-line unified
rule + the new guardrails. MEMORY.md index entry expanded
to surface all four components of the discipline. Paired-edit
marker bumped.

* memory(amortized-precision): add positive complement of Goodhart Risk per Aaron 21:32Z + Amara 21:38Z compact-form correction

Aaron 2026-04-28T21:32Z: 'amortized precision leads to momentum
look at 6 sigma for proof and similar like kanban discipline.'

Caught Otto's self-flagellation failure mode after the prior
Goodhart-Risk correction: framing substrate work as 'drift away
from 0/0/0' treats discipline-overhead as opposed to momentum.
It isn't. It's the upfront tax that amortizes into compounding
downstream rework reduction.

The dual-constraint pair prevents oscillation:

- Goodhart Risk: 'more process = more progress' (the failure
  mode the bead system already guards against).
- Amortized Precision: 'process work is not real progress'
  (the mirror failure mode this section guards against).

Distilled rule (Amara 21:38Z compact-form):

  Precision is not the enemy of momentum.
  Unamortized process is drag.
  Amortized precision is momentum.

External lineage per Aaron's stop-mythology directive:

- Six Sigma — Bill Smith / Motorola / 1986; DMAIC; 3.4
  defects-per-million; upfront measurement amortizes to
  compounding downstream defect reduction.
- Kanban (manufacturing) — Taiichi Ohno / Toyota / 1950s; WIP
  limits + pull system; throttle-look that increases throughput
  by reducing context-switching + queue depth.
- Kanban (software) — David J. Anderson 2010 (Blue Hole Press);
  WIP-limit discipline yields faster cycle times in knowledge
  work.

Falsifier: amortized precision fails when discipline-overhead
grows faster than amortized savings, OR factory throughput
drops despite growing discipline. Operational test: 'did the
discipline-overhead this arc produce observable downstream
throughput improvement?'

Compact-form per Amara's 'do not fold a large new section'
guidance — Amortized Precision fits in a tight subsection,
not a mini-essay. Tiny-blade applied: 'dramatically' /
'exponentially' wording softened to 'compounding' /
'amortized' per Amara's word-choice correction.

MEMORY.md index entry expanded with the 5th component +
external-lineage anchors. Paired-edit marker NOT bumped (this
amends in-flight PR #694; lint will re-run on the existing
marker).

* memory(rerere+post-abort): Copilot review fixes — rerere-must-be-enabled + broken cross-ref + MEMORY.md fast-path duplicate removal

Addresses Copilot review threads on PR #694 (the highest-priority,
factually-correctness ones):

1. **Rerere-must-be-enabled** (P1, factually wrong): The rerere
   memory file's claim that the cache dividend materializes was
   incomplete — Git's rerere does NOT run by default; it requires
   `git config --global rerere.enabled true`. Added explicit
   prerequisite section at the top of the file.

2. **Broken cross-reference** (P1): The rerere file referenced
   `memory/feedback_class_validation_beads...` (with literal
   ellipsis, unsearchable). Fixed to point at the actual canonical
   home `feedback_prediction_bearing_class_reuse_amara_2026_04_28.md`
   where the Class Validation Beads framework lives.

3. **MEMORY.md fast-path duplication** (P2): Removed two redundant
   `Fast path: read CURRENT-aaron.md...` markers added by this PR.
   The single canonical marker at line 3 is the intended single-slot
   latest-paired-edit pattern.

P2 threads on doctrine refinement (exact-SHA leases, @{u} guards,
fetch-before-comparing, git pull --ff-only avoidance) resolved with
explanations:

- **Bare --force-with-lease vs exact-SHA**: factory operationally
  uses bare lease form (verified working today: 4 rebases pushed
  clean). Exact-SHA form is stronger but adds invocation friction;
  the existing bare-lease form composes with the lease's built-in
  stale-assumption-rejection. Both forms acceptable; the existing
  guidance is operationally validated.
- **@{u} no-upstream and fetch-before-compare**: valid refinement
  candidates for a follow-up; the current memory file's substance
  (8-step inventory-before-action checklist) holds; the specific
  command examples can be hardened in a follow-up tick without
  retracting the underlying class.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants