Skip to content

feat(v4): audit two-dimension model — Native Health + dotforge Adoption#3

Merged
luiseiman merged 4 commits into
mainfrom
feature/audit-two-dimensions
Jun 3, 2026
Merged

feat(v4): audit two-dimension model — Native Health + dotforge Adoption#3
luiseiman merged 4 commits into
mainfrom
feature/audit-two-dimensions

Conversation

@luiseiman
Copy link
Copy Markdown
Owner

Qué

Reorienta el audit de "¿tenés la maquinaria dotforge?" a "¿usás bien Claude Code nativo?", según la decisión de scope native-first (ADR + domain rule).

Modelo de dos dimensiones

  • A — Native Health (score, 0-10): 5 obligatorios + 10 recomendados. Nuevos items de uso nativo: auto-memory hygiene (MEMORY.md como índice, no dump), permission cascade (settings.local.json), attribution (vs includeCoAuthoredBy deprecado). Misma fórmula obl*0.7 + rec*0.3, cap de seguridad 6.0.
  • B — dotforge Adoption (forge_adoption, 0-5): behaviors, workflows, override loop, domain rules, sync recency. Informativo — nunca afecta el score. Un proyecto native-first (B=0, A=10) ahora es resultado deseable, no penalizado.

Consumidores migrados (mantener alineados)

  • audit/score.sh (motor CI) — items 6-15 reescritos + dimensión B + output dual
  • scripts/audit_all.py (re-auditor de 12 proyectos) — escribe forge_adoption al registry
  • .github/workflows/audit.yml — usa native_health_items, corrige divisor /7 viejo
  • docs (README, usage-guide, guia-uso) — tablas y fórmula de dos dimensiones

Inconsistencias preexistentes corregidas

  1. scoring sumaba items 6-15 pero el checklist tenía 6-17
  2. comentario del registry mostraba divisor 3.0/8 incorrecto
  3. items v4 16-17 quedaban fuera de la fórmula del score

Verificación

  • bash -n + ejecución + JSON + gate (pasa 7.0 / falla 9.5) en score.sh
  • py_compile + dry-run sobre los 12 proyectos reales en audit_all.py
  • YAML válido en registry y workflow; contrato JSON del CI verificado clave por clave ✓
  • Efecto esperado: proyectos native-first suben ~+0.60 de Native Health (salto de transición documentado, no regresión)

🤖 Generated with Claude Code

luiseiman and others added 2 commits June 3, 2026 13:46
Reorient the audit from "do you have dotforge machinery?" to "do you use
native Claude Code well?", per the native-first scope decision.

- Dimension A — Native Health (score, 0-10): 5 obligatory + 10 recommended.
  New native-usage items: auto-memory hygiene (MEMORY.md as index, not dump),
  permission cascade (settings.local.json), attribution (vs deprecated
  includeCoAuthoredBy). Same obl*0.7 + rec*0.3 formula, security cap 6.0.
- Dimension B — dotforge Adoption (forge_adoption, 0-5): behaviors, workflows,
  override loop, domain rules, sync recency. INFORMATIONAL — never affects score.
  Native-first projects (B=0, A=10) are now a desirable outcome, not penalized.

Migrate all checklist consumers to keep them aligned:
- audit/score.sh (CI engine): rewrite items 6-15 + add dimension B + dual output
- audit_all.py (12-project re-auditor): same, writes forge_adoption to registry
- .github/workflows/audit.yml: use native_health_items, fix stale /7 divisor
- docs (README, usage-guide, guia-uso): two-dimension tables + formula

Fixes three pre-existing inconsistencies: scoring summed items 6-15 while the
checklist had 6-17; registry comment showed wrong 3.0/8 divisor; v4 items 16-17
were outside the score formula.

Adds ADR docs/v4/SCOPE-DECISION.md and rule domain/native-vs-dotforge-boundary.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The audit job computed the score correctly but failed at the comment step
with 403 "Resource not accessible by integration" — the workflow declared
no permissions and the repo default GITHUB_TOKEN is read-only.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 3, 2026

🟢 dotforge Native Health: 9/10 (Excelente)

dotforge Adoption: 4/5 (Most) — informational, does not affect Native Health

Obligatorio 9/10 Recomendado 9/10

Dimension A — Native Health

# Item Score Note
1 claude_md ✅ 2 Complete (stack:1 build:0 arch:1 conventions:1)
2 settings_json ✅ 2 Deny list covers .env/key/pem/credentials
3 rules ✅ 2 5 rules, all with globs:
4 block_destructive ✅ 2 Executable, wired, covers rm/DROP/force
5 build_test ⚠️ 1 Commands present but no build/test pattern detected
6 gitignore ⚠️ 1 Covers secrets (6/4 patterns)
7 injection ⚠️ 1 Clean (6 files scanned)
8 auto_mode ⚠️ 1 defaultMode not set — auto mode not enabled (pass)
9 sandboxing ❌ 0 Project handles secrets (cloud/API refs in scripts or docs) but sandbox.enabled is not true
10 lint_hook ⚠️ 1 lint-on-save.sh present and executable
11 auto_memory ⚠️ 1 Memory present (error-log:2 agent-mem:18 memory.md-index:0)
12 permission_cascade ⚠️ 1 No local overrides needed (auto-pass)
13 attribution ⚠️ 1 Default co-author acceptable (auto-pass)
14 commands ⚠️ 1 4 custom command(s)
15 agents ⚠️ 1 Partial (agents:0 rule:1)

Dimension B — dotforge Adoption (informational)

# Item Score Note
B1 behaviors ✅ 1 5 compiled behavior hook(s) wired in settings.json
B2 workflows ✅ 1 1 workflow(s) with export const meta
B3 override_loop ✅ 1 overrides.log present and hook wired in SessionStart
B4 domain_rules ✅ 1 21 domain rule(s) (freshness checked semantically by /forge audit)
B5 sync_recency — 0 Sync recency indeterminate standalone — resolved by /forge audit via registry

Score computed by audit/score.sh — mechanical checks only. Run /forge audit for full semantic evaluation.

The v4.0.0 release bumped VERSION but left .claude-plugin/plugin.json at
3.0.4, failing the ci.yml version-consistency check on every PR.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 3, 2026

🟢 dotforge Native Health: 9/10 (Excelente)

dotforge Adoption: 4/5 (Most) — informational, does not affect Native Health

Obligatorio 9/10 Recomendado 9/10

Dimension A — Native Health

# Item Score Note
1 claude_md ✅ 2 Complete (stack:1 build:0 arch:1 conventions:1)
2 settings_json ✅ 2 Deny list covers .env/key/pem/credentials
3 rules ✅ 2 5 rules, all with globs:
4 block_destructive ✅ 2 Executable, wired, covers rm/DROP/force
5 build_test ⚠️ 1 Commands present but no build/test pattern detected
6 gitignore ⚠️ 1 Covers secrets (6/4 patterns)
7 injection ⚠️ 1 Clean (6 files scanned)
8 auto_mode ⚠️ 1 defaultMode not set — auto mode not enabled (pass)
9 sandboxing ❌ 0 Project handles secrets (cloud/API refs in scripts or docs) but sandbox.enabled is not true
10 lint_hook ⚠️ 1 lint-on-save.sh present and executable
11 auto_memory ⚠️ 1 Memory present (error-log:2 agent-mem:18 memory.md-index:0)
12 permission_cascade ⚠️ 1 No local overrides needed (auto-pass)
13 attribution ⚠️ 1 Default co-author acceptable (auto-pass)
14 commands ⚠️ 1 4 custom command(s)
15 agents ⚠️ 1 Partial (agents:0 rule:1)

Dimension B — dotforge Adoption (informational)

# Item Score Note
B1 behaviors ✅ 1 5 compiled behavior hook(s) wired in settings.json
B2 workflows ✅ 1 1 workflow(s) with export const meta
B3 override_loop ✅ 1 overrides.log present and hook wired in SessionStart
B4 domain_rules ✅ 1 21 domain rule(s) (freshness checked semantically by /forge audit)
B5 sync_recency — 0 Sync recency indeterminate standalone — resolved by /forge audit via registry

Score computed by audit/score.sh — mechanical checks only. Run /forge audit for full semantic evaluation.

… default

search-first ships enabled=false since v3.6.1 (flag-consume false positives),
but test_on_off.sh still asserted an initial enabled=true, failing on every PR.
The on/off cycle test now sets its own baseline via the CLI, decoupling it from
the shipped default of any single behavior.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 3, 2026

🟢 dotforge Native Health: 9/10 (Excelente)

dotforge Adoption: 4/5 (Most) — informational, does not affect Native Health

Obligatorio 9/10 Recomendado 9/10

Dimension A — Native Health

# Item Score Note
1 claude_md ✅ 2 Complete (stack:1 build:0 arch:1 conventions:1)
2 settings_json ✅ 2 Deny list covers .env/key/pem/credentials
3 rules ✅ 2 5 rules, all with globs:
4 block_destructive ✅ 2 Executable, wired, covers rm/DROP/force
5 build_test ⚠️ 1 Commands present but no build/test pattern detected
6 gitignore ⚠️ 1 Covers secrets (6/4 patterns)
7 injection ⚠️ 1 Clean (6 files scanned)
8 auto_mode ⚠️ 1 defaultMode not set — auto mode not enabled (pass)
9 sandboxing ❌ 0 Project handles secrets (cloud/API refs in scripts or docs) but sandbox.enabled is not true
10 lint_hook ⚠️ 1 lint-on-save.sh present and executable
11 auto_memory ⚠️ 1 Memory present (error-log:2 agent-mem:18 memory.md-index:0)
12 permission_cascade ⚠️ 1 No local overrides needed (auto-pass)
13 attribution ⚠️ 1 Default co-author acceptable (auto-pass)
14 commands ⚠️ 1 4 custom command(s)
15 agents ⚠️ 1 Partial (agents:0 rule:1)

Dimension B — dotforge Adoption (informational)

# Item Score Note
B1 behaviors ✅ 1 5 compiled behavior hook(s) wired in settings.json
B2 workflows ✅ 1 1 workflow(s) with export const meta
B3 override_loop ✅ 1 overrides.log present and hook wired in SessionStart
B4 domain_rules ✅ 1 21 domain rule(s) (freshness checked semantically by /forge audit)
B5 sync_recency — 0 Sync recency indeterminate standalone — resolved by /forge audit via registry

Score computed by audit/score.sh — mechanical checks only. Run /forge audit for full semantic evaluation.

@luiseiman luiseiman merged commit 559c757 into main Jun 3, 2026
2 checks passed
@luiseiman luiseiman deleted the feature/audit-two-dimensions branch June 3, 2026 17:04
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.

1 participant