agentera 0.0.0 → 3.0.0-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -45
- package/bundle/.agentera-npx-bundle.json +4 -0
- package/bundle/references/adapters/cursor.md +213 -0
- package/bundle/references/adapters/opencode.md +530 -0
- package/bundle/references/adapters/package-manifest-interface-model.yaml +337 -0
- package/bundle/references/adapters/package-registry.yaml +247 -0
- package/bundle/references/adapters/package-surface-characterization.md +48 -0
- package/bundle/references/adapters/runtime-adapter-characterization.md +79 -0
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +200 -0
- package/bundle/references/adapters/runtime-adapter-registry.yaml +548 -0
- package/bundle/references/adapters/runtime-feature-parity.md +189 -0
- package/bundle/references/analysis/benchmark.md +267 -0
- package/bundle/references/analysis/startup-measurement-contract.yaml +424 -0
- package/bundle/references/artifacts/artifact-registry-interface-model.yaml +288 -0
- package/bundle/references/cli/agent-ready-state-contract.yaml +950 -0
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +233 -0
- package/bundle/references/cli/audience-namespace-cli-migration.yaml +355 -0
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +278 -0
- package/bundle/references/cli/capability-instruction-contract.yaml +123 -0
- package/bundle/references/cli/capability-tool-classification.yaml +53 -0
- package/bundle/references/cli/routing-execution-vocabulary.yaml +281 -0
- package/bundle/references/cli/update-channels.yaml +120 -0
- package/bundle/references/cli/vocabulary-index.yaml +160 -0
- package/bundle/references/cli/vocabulary.md +562 -0
- package/bundle/references/meta/documentation-inventory.md +43 -0
- package/bundle/references/v1-section-mapping.md +47 -0
- package/bundle/registry.json +39 -0
- package/bundle/skills/agentera/.claude-plugin/plugin.json +27 -0
- package/bundle/skills/agentera/SKILL.md +470 -0
- package/bundle/skills/agentera/agents/dokumentera.toml +6 -0
- package/bundle/skills/agentera/agents/hej.toml +6 -0
- package/bundle/skills/agentera/agents/inspektera.toml +6 -0
- package/bundle/skills/agentera/agents/inspirera.toml +6 -0
- package/bundle/skills/agentera/agents/optimera.toml +6 -0
- package/bundle/skills/agentera/agents/orkestrera.toml +6 -0
- package/bundle/skills/agentera/agents/planera.toml +6 -0
- package/bundle/skills/agentera/agents/profilera.toml +6 -0
- package/bundle/skills/agentera/agents/realisera.toml +6 -0
- package/bundle/skills/agentera/agents/resonera.toml +6 -0
- package/bundle/skills/agentera/agents/visionera.toml +6 -0
- package/bundle/skills/agentera/agents/visualisera.toml +6 -0
- package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +428 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +73 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +35 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/validation.yaml +139 -0
- package/bundle/skills/agentera/capabilities/hej/instructions.md +331 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +69 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/exit.yaml +32 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +58 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/validation.yaml +55 -0
- package/bundle/skills/agentera/capabilities/inspektera/instructions.md +514 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +76 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/exit.yaml +36 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +38 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/validation.yaml +113 -0
- package/bundle/skills/agentera/capabilities/inspirera/instructions.md +280 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +24 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/exit.yaml +33 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +34 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/validation.yaml +58 -0
- package/bundle/skills/agentera/capabilities/optimera/instructions.md +437 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/artifacts.yaml +69 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +39 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/validation.yaml +91 -0
- package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +433 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +64 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/exit.yaml +34 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +42 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +107 -0
- package/bundle/skills/agentera/capabilities/planera/instructions.md +368 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +62 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/exit.yaml +33 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +34 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +61 -0
- package/bundle/skills/agentera/capabilities/profilera/instructions.md +419 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +18 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/exit.yaml +34 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +45 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +57 -0
- package/bundle/skills/agentera/capabilities/realisera/instructions.md +403 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +80 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +39 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +110 -0
- package/bundle/skills/agentera/capabilities/resonera/instructions.md +329 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +47 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +46 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +77 -0
- package/bundle/skills/agentera/capabilities/visionera/instructions.md +309 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/artifacts.yaml +57 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +41 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/validation.yaml +74 -0
- package/bundle/skills/agentera/capabilities/visualisera/instructions.md +400 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/artifacts.yaml +44 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/exit.yaml +34 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +33 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/validation.yaml +80 -0
- package/bundle/skills/agentera/capability_schema_contract.yaml +385 -0
- package/bundle/skills/agentera/protocol.yaml +463 -0
- package/bundle/skills/agentera/references/contract.md +1039 -0
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +60 -0
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +461 -0
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +55 -0
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +402 -0
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +373 -0
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +484 -0
- package/bundle/skills/agentera/schemas/artifacts/objective.yaml +399 -0
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +342 -0
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +325 -0
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +110 -0
- package/bundle/skills/agentera/schemas/artifacts/vision.yaml +262 -0
- package/bundle/skills/hej/.claude-plugin/plugin.json +6 -0
- package/bundle/skills/hej/SKILL.md +69 -0
- package/bundle/skills/hej/agents/hej.toml +11 -0
- package/bundle/skills/hej/agents/openai.yaml +8 -0
- package/dist/analytics/extractCorpus.js +1791 -0
- package/dist/analytics/extractCorpus.js.map +1 -0
- package/dist/analytics/usageStats.js +487 -0
- package/dist/analytics/usageStats.js.map +1 -0
- package/dist/bin/agentera.js +4 -0
- package/dist/bin/agentera.js.map +1 -0
- package/dist/cli/appContext.js +226 -0
- package/dist/cli/appContext.js.map +1 -0
- package/dist/cli/argvalidate.js +41 -0
- package/dist/cli/argvalidate.js.map +1 -0
- package/dist/cli/capabilityContext.js +2421 -0
- package/dist/cli/capabilityContext.js.map +1 -0
- package/dist/cli/commands/backfill.js +84 -0
- package/dist/cli/commands/backfill.js.map +1 -0
- package/dist/cli/commands/capability.js +44 -0
- package/dist/cli/commands/capability.js.map +1 -0
- package/dist/cli/commands/compact.js +148 -0
- package/dist/cli/commands/compact.js.map +1 -0
- package/dist/cli/commands/doctor.js +180 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/lint.js +179 -0
- package/dist/cli/commands/lint.js.map +1 -0
- package/dist/cli/commands/prime.js +545 -0
- package/dist/cli/commands/prime.js.map +1 -0
- package/dist/cli/commands/query.js +346 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/report.js +210 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/commands/schema.js +306 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/state.js +1012 -0
- package/dist/cli/commands/state.js.map +1 -0
- package/dist/cli/commands/upgrade.js +49 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/commands/validate.js +519 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/verify.js +204 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/dispatch.js +962 -0
- package/dist/cli/dispatch.js.map +1 -0
- package/dist/cli/orientation.js +595 -0
- package/dist/cli/orientation.js.map +1 -0
- package/dist/cli/prime-blob.js +3 -0
- package/dist/cli/prime-blob.js.map +1 -0
- package/dist/cli/stateQuery.js +292 -0
- package/dist/cli/stateQuery.js.map +1 -0
- package/dist/cli/structured.js +18 -0
- package/dist/cli/structured.js.map +1 -0
- package/dist/core/difflib.js +274 -0
- package/dist/core/difflib.js.map +1 -0
- package/dist/core/git.js +43 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/paths.js +50 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/pyjson.js +101 -0
- package/dist/core/pyjson.js.map +1 -0
- package/dist/core/sourceRoot.js +72 -0
- package/dist/core/sourceRoot.js.map +1 -0
- package/dist/core/toml.js +11 -0
- package/dist/core/toml.js.map +1 -0
- package/dist/core/yaml.js +25 -0
- package/dist/core/yaml.js.map +1 -0
- package/dist/eval/evalSkills.js +258 -0
- package/dist/eval/evalSkills.js.map +1 -0
- package/dist/eval/semanticEval.js +148 -0
- package/dist/eval/semanticEval.js.map +1 -0
- package/dist/eval/semanticFixtures.js +227 -0
- package/dist/eval/semanticFixtures.js.map +1 -0
- package/dist/hooks/common.js +160 -0
- package/dist/hooks/common.js.map +1 -0
- package/dist/hooks/compaction.js +935 -0
- package/dist/hooks/compaction.js.map +1 -0
- package/dist/hooks/cursorPreToolUse.js +19 -0
- package/dist/hooks/cursorPreToolUse.js.map +1 -0
- package/dist/hooks/cursorSessionStart.js +71 -0
- package/dist/hooks/cursorSessionStart.js.map +1 -0
- package/dist/hooks/sessionStart.js +209 -0
- package/dist/hooks/sessionStart.js.map +1 -0
- package/dist/hooks/sessionStop.js +212 -0
- package/dist/hooks/sessionStop.js.map +1 -0
- package/dist/hooks/validateArtifact.js +933 -0
- package/dist/hooks/validateArtifact.js.map +1 -0
- package/dist/registries/artifactRegistry.js +206 -0
- package/dist/registries/artifactRegistry.js.map +1 -0
- package/dist/registries/capabilityContract.js +310 -0
- package/dist/registries/capabilityContract.js.map +1 -0
- package/dist/registries/packageRegistry.js +641 -0
- package/dist/registries/packageRegistry.js.map +1 -0
- package/dist/registries/runtimeAdapterRegistry.js +315 -0
- package/dist/registries/runtimeAdapterRegistry.js.map +1 -0
- package/dist/setup/codex.js +1052 -0
- package/dist/setup/codex.js.map +1 -0
- package/dist/setup/copilot.js +227 -0
- package/dist/setup/copilot.js.map +1 -0
- package/dist/setup/cursor.js +127 -0
- package/dist/setup/cursor.js.map +1 -0
- package/dist/setup/doctor.js +1269 -0
- package/dist/setup/doctor.js.map +1 -0
- package/dist/state/installRoot.js +279 -0
- package/dist/state/installRoot.js.map +1 -0
- package/dist/state/progressCommit.js +289 -0
- package/dist/state/progressCommit.js.map +1 -0
- package/dist/state/startupAnalysis.js +1953 -0
- package/dist/state/startupAnalysis.js.map +1 -0
- package/dist/upgrade/appModel.js +189 -0
- package/dist/upgrade/appModel.js.map +1 -0
- package/dist/upgrade/channels.js +197 -0
- package/dist/upgrade/channels.js.map +1 -0
- package/dist/upgrade/compatibility.js +197 -0
- package/dist/upgrade/compatibility.js.map +1 -0
- package/dist/upgrade/doctor.js +368 -0
- package/dist/upgrade/doctor.js.map +1 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js +412 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -0
- package/dist/upgrade/upgradeCommands.js +40 -0
- package/dist/upgrade/upgradeCommands.js.map +1 -0
- package/dist/upgrade/upgradeOrchestrator.js +280 -0
- package/dist/upgrade/upgradeOrchestrator.js.map +1 -0
- package/dist/validate/appHomeContract.js +150 -0
- package/dist/validate/appHomeContract.js.map +1 -0
- package/dist/validate/capability.js +412 -0
- package/dist/validate/capability.js.map +1 -0
- package/dist/validate/crossCapability.js +145 -0
- package/dist/validate/crossCapability.js.map +1 -0
- package/dist/validate/lifecycleAdapters.js +772 -0
- package/dist/validate/lifecycleAdapters.js.map +1 -0
- package/dist/validate/selfAudit.js +107 -0
- package/dist/validate/selfAudit.js.map +1 -0
- package/package.json +28 -8
- package/LICENSE +0 -201
- package/bin/agentera.mjs +0 -50
- package/lib/exec.mjs +0 -116
- package/lib/resolve.mjs +0 -129
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Changelog Artifact Schema
|
|
2
|
+
#
|
|
3
|
+
# Release history maintained by realisera. Tracks versioned releases with
|
|
4
|
+
# categorized changes (Added, Changed, Fixed, Removed).
|
|
5
|
+
#
|
|
6
|
+
# Note: CHANGELOG.md is a human-facing Markdown artifact. It remains at the
|
|
7
|
+
# project root and is not migrated to YAML. This schema exists for validation
|
|
8
|
+
# and CLI discovery consistency.
|
|
9
|
+
|
|
10
|
+
meta:
|
|
11
|
+
name: changelog
|
|
12
|
+
version: "1.0.0"
|
|
13
|
+
description: >-
|
|
14
|
+
Release history. Produced by realisera. Consumed by users and agents
|
|
15
|
+
for version context. Human-facing: remains Markdown at project root.
|
|
16
|
+
artifact_type: human_facing
|
|
17
|
+
path: "CHANGELOG.md"
|
|
18
|
+
producer: realisera
|
|
19
|
+
consumers: [hej, all_skills]
|
|
20
|
+
format: markdown
|
|
21
|
+
|
|
22
|
+
GROUP_PREFIXES:
|
|
23
|
+
BUDGET: CB
|
|
24
|
+
RELEASE: CR
|
|
25
|
+
VALIDATION: CV
|
|
26
|
+
|
|
27
|
+
BUDGET:
|
|
28
|
+
1:
|
|
29
|
+
id: CB1
|
|
30
|
+
token_budget: 5000
|
|
31
|
+
description: >-
|
|
32
|
+
Maximum tokens for CHANGELOG.md content. Exceeding triggers compaction.
|
|
33
|
+
|
|
34
|
+
RELEASE:
|
|
35
|
+
1:
|
|
36
|
+
id: CR1
|
|
37
|
+
field: version
|
|
38
|
+
type: string
|
|
39
|
+
required: true
|
|
40
|
+
description: >-
|
|
41
|
+
Semantic version string (e.g., "2.0.0"). Must follow semver.
|
|
42
|
+
validation:
|
|
43
|
+
- "Must match semver format: MAJOR.MINOR.PATCH"
|
|
44
|
+
2:
|
|
45
|
+
id: CR2
|
|
46
|
+
field: date
|
|
47
|
+
type: string
|
|
48
|
+
required: true
|
|
49
|
+
description: >-
|
|
50
|
+
Release date in YYYY-MM-DD format.
|
|
51
|
+
validation:
|
|
52
|
+
- "Must match YYYY-MM-DD format"
|
|
53
|
+
3:
|
|
54
|
+
id: CR3
|
|
55
|
+
field: changes
|
|
56
|
+
type: list[string]
|
|
57
|
+
required: true
|
|
58
|
+
description: >-
|
|
59
|
+
List of changes in this release, categorized by type
|
|
60
|
+
(Added, Changed, Fixed, Removed).
|
|
@@ -0,0 +1,461 @@
|
|
|
1
|
+
# Decisions Artifact Schema
|
|
2
|
+
#
|
|
3
|
+
# Reasoning trail maintained by resonera. Each deliberation session appends
|
|
4
|
+
# one entry. Decisions are referenced by realisera, optimera, and profilera
|
|
5
|
+
# for context on why choices were made.
|
|
6
|
+
#
|
|
7
|
+
# Structural pattern: UPPER_CASE groups with numbered entries and stable IDs,
|
|
8
|
+
# following capability_schema_contract.yaml and protocol.yaml conventions.
|
|
9
|
+
#
|
|
10
|
+
# ── Field-by-field mapping: v1 DECISIONS.md → v2 decisions.yaml ──
|
|
11
|
+
#
|
|
12
|
+
# v1 Field v2 Field v2 ID
|
|
13
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
14
|
+
# ## Decision N · date DECISION.number DC1
|
|
15
|
+
# (date from heading) DECISION.date DC2
|
|
16
|
+
# **Question**: <text> DECISION.question DC3
|
|
17
|
+
# **Context**: <text> DECISION.context DC4
|
|
18
|
+
# **Alternatives**: (list) ALTERNATIVE entry DA1
|
|
19
|
+
# (named alt, e.g. "[Foo], chosen") ALTERNATIVE.name DA2
|
|
20
|
+
# (chosen/rejected status) ALTERNATIVE.status DA3
|
|
21
|
+
# **Choice**: <text> DECISION.choice DC5
|
|
22
|
+
# **Reasoning**: <text> DECISION.reasoning DC6
|
|
23
|
+
# **Confidence**: <label> DECISION.confidence DC7
|
|
24
|
+
# **Feeds into**: <text> DECISION.feeds_into DC8
|
|
25
|
+
# ## Archived Decisions (implicit section) —
|
|
26
|
+
# - Decision N (date): [Choice] — ... ARCHIVE.summary DR1
|
|
27
|
+
#
|
|
28
|
+
# Protocol references:
|
|
29
|
+
# confidence: DL1-DL3 (protocol.yaml DECISION_LABELS)
|
|
30
|
+
|
|
31
|
+
meta:
|
|
32
|
+
name: decisions
|
|
33
|
+
version: "1.0.0"
|
|
34
|
+
description: >-
|
|
35
|
+
Reasoning trail maintained by resonera. Each deliberation session
|
|
36
|
+
appends one entry. Decisions are referenced by realisera, optimera,
|
|
37
|
+
profilera, planera, inspektera, hej, dokumentera, visionera, resonera,
|
|
38
|
+
and orkestrera for context on why choices were made.
|
|
39
|
+
artifact_type: agent_facing
|
|
40
|
+
path: ".agentera/decisions.yaml"
|
|
41
|
+
producer: resonera
|
|
42
|
+
consumers: [dokumentera, hej, inspektera, optimera, orkestrera, planera, profilera, realisera, resonera, visionera]
|
|
43
|
+
format: yaml
|
|
44
|
+
|
|
45
|
+
GROUP_PREFIXES:
|
|
46
|
+
BUDGET: DB
|
|
47
|
+
COMPACTION: DX
|
|
48
|
+
DECISION: DC
|
|
49
|
+
ALTERNATIVE: DA
|
|
50
|
+
SATISFACTION: DS
|
|
51
|
+
ARCHIVE: DR
|
|
52
|
+
VALIDATION: DV
|
|
53
|
+
|
|
54
|
+
BUDGET:
|
|
55
|
+
1:
|
|
56
|
+
id: DB1
|
|
57
|
+
scope: per_decision_entry
|
|
58
|
+
max_words: 200
|
|
59
|
+
description: >-
|
|
60
|
+
Maximum words per decision entry. Budgets are guidelines, not hard
|
|
61
|
+
blockers.
|
|
62
|
+
2:
|
|
63
|
+
id: DB2
|
|
64
|
+
scope: full_file
|
|
65
|
+
max_words: null
|
|
66
|
+
description: >-
|
|
67
|
+
No full-file word budget. Compaction manages size via entry count.
|
|
68
|
+
|
|
69
|
+
COMPACTION:
|
|
70
|
+
1:
|
|
71
|
+
id: DX1
|
|
72
|
+
rule: uniform_10_40_50
|
|
73
|
+
description: >-
|
|
74
|
+
Growing artifacts follow a uniform 10/40/50 rule: 10 full-detail
|
|
75
|
+
entries, 40 one-line archive entries, drop beyond 50 total.
|
|
76
|
+
2:
|
|
77
|
+
id: DX2
|
|
78
|
+
full_detail:
|
|
79
|
+
max_entries: 10
|
|
80
|
+
selection: "10 most recent decisions"
|
|
81
|
+
format: "Standard decision entry format (all fields)"
|
|
82
|
+
description: >-
|
|
83
|
+
The 10 most recent decisions are kept in full detail with all fields.
|
|
84
|
+
3:
|
|
85
|
+
id: DX3
|
|
86
|
+
one_line_archive:
|
|
87
|
+
max_entries: 40
|
|
88
|
+
selection: "Decisions 11 through 50"
|
|
89
|
+
format: "Decision N (YYYY-MM-DD): [Choice] — <=15-word summary"
|
|
90
|
+
fields: [number, date, choice, summary]
|
|
91
|
+
description: >-
|
|
92
|
+
Decisions 11 through 50 are collapsed to compact archive entries under
|
|
93
|
+
the archive section. Compact summaries preserve decision number, date,
|
|
94
|
+
and chosen alternative; structured compact fields preserve outcome and
|
|
95
|
+
explicit feeds_into references when present so CLI downstream references
|
|
96
|
+
remain non-inferential.
|
|
97
|
+
4:
|
|
98
|
+
id: DX4
|
|
99
|
+
dropped:
|
|
100
|
+
threshold: 50
|
|
101
|
+
action: "Removed entirely"
|
|
102
|
+
description: >-
|
|
103
|
+
Decisions older than 50 are dropped entirely.
|
|
104
|
+
5:
|
|
105
|
+
id: DX5
|
|
106
|
+
trigger: "When resonera writes a new decision"
|
|
107
|
+
description: >-
|
|
108
|
+
Compaction runs when the producing skill writes a new entry.
|
|
109
|
+
If >10 full-detail entries exist, collapse the oldest to one-line.
|
|
110
|
+
If >40 one-line entries exist, drop the oldest.
|
|
111
|
+
6:
|
|
112
|
+
id: DX6
|
|
113
|
+
archive_section:
|
|
114
|
+
heading: "Archived Decisions"
|
|
115
|
+
placement: "Below recent decisions"
|
|
116
|
+
description: >-
|
|
117
|
+
Archive entries sit below the recent decisions section.
|
|
118
|
+
7:
|
|
119
|
+
id: DX7
|
|
120
|
+
insertion_rule: >-
|
|
121
|
+
New full entry is inserted in the active section immediately before
|
|
122
|
+
the archive section; if no archive exists, append at end of file.
|
|
123
|
+
Active entries must have unique numbers and remain ascending.
|
|
124
|
+
Do not reuse or renumber except when repairing artifact corruption.
|
|
125
|
+
description: >-
|
|
126
|
+
Rules for inserting new decision entries and maintaining order.
|
|
127
|
+
|
|
128
|
+
DECISION:
|
|
129
|
+
1:
|
|
130
|
+
id: DC1
|
|
131
|
+
field: number
|
|
132
|
+
type: integer
|
|
133
|
+
required: true
|
|
134
|
+
description: >-
|
|
135
|
+
Monotonically increasing decision number. One greater than the
|
|
136
|
+
highest decision number in active and archived entries.
|
|
137
|
+
validation:
|
|
138
|
+
- "Must be a positive integer"
|
|
139
|
+
- "Must be unique across active and archived entries"
|
|
140
|
+
- "Must be one greater than the previous highest"
|
|
141
|
+
2:
|
|
142
|
+
id: DC2
|
|
143
|
+
field: date
|
|
144
|
+
type: string
|
|
145
|
+
format: "YYYY-MM-DD"
|
|
146
|
+
required: true
|
|
147
|
+
description: "When the decision was recorded."
|
|
148
|
+
validation:
|
|
149
|
+
- "Must match YYYY-MM-DD format"
|
|
150
|
+
3:
|
|
151
|
+
id: DC3
|
|
152
|
+
field: question
|
|
153
|
+
type: string
|
|
154
|
+
required: true
|
|
155
|
+
description: >-
|
|
156
|
+
The question or decision being made. Phrased as a question that
|
|
157
|
+
the decision answers.
|
|
158
|
+
validation:
|
|
159
|
+
- "Non-empty string"
|
|
160
|
+
4:
|
|
161
|
+
id: DC4
|
|
162
|
+
field: context
|
|
163
|
+
type: string
|
|
164
|
+
required: true
|
|
165
|
+
description: >-
|
|
166
|
+
Background information framing the decision. Why this question
|
|
167
|
+
matters, what constraints exist, what prior decisions are relevant.
|
|
168
|
+
validation:
|
|
169
|
+
- "Non-empty string"
|
|
170
|
+
5:
|
|
171
|
+
id: DC5
|
|
172
|
+
field: choice
|
|
173
|
+
type: string
|
|
174
|
+
required: true
|
|
175
|
+
description: >-
|
|
176
|
+
The chosen alternative, with explanation of what was chosen and why
|
|
177
|
+
it is the right answer in context.
|
|
178
|
+
validation:
|
|
179
|
+
- "Non-empty string"
|
|
180
|
+
6:
|
|
181
|
+
id: DC6
|
|
182
|
+
field: reasoning
|
|
183
|
+
type: string
|
|
184
|
+
required: true
|
|
185
|
+
description: >-
|
|
186
|
+
Why this choice was made over the alternatives. The deliberative
|
|
187
|
+
reasoning trail that justifies the decision.
|
|
188
|
+
validation:
|
|
189
|
+
- "Non-empty string"
|
|
190
|
+
7:
|
|
191
|
+
id: DC7
|
|
192
|
+
field: confidence
|
|
193
|
+
type: string
|
|
194
|
+
required: true
|
|
195
|
+
description: >-
|
|
196
|
+
Decision confidence label. References protocol.yaml DECISION_LABELS
|
|
197
|
+
(DL1-DL3). Firm = committed, provisional = best current answer,
|
|
198
|
+
exploratory = direction to try.
|
|
199
|
+
protocol_ref: DECISION_LABELS
|
|
200
|
+
validation:
|
|
201
|
+
- "Must be one of: firm, provisional, exploratory"
|
|
202
|
+
8:
|
|
203
|
+
id: DC8
|
|
204
|
+
field: feeds_into
|
|
205
|
+
type: string
|
|
206
|
+
required: false
|
|
207
|
+
description: >-
|
|
208
|
+
What artifacts, skills, or work items this decision affects.
|
|
209
|
+
Downstream consumers that should be aware of this choice.
|
|
210
|
+
9:
|
|
211
|
+
id: DC9
|
|
212
|
+
field: satisfaction
|
|
213
|
+
type: map
|
|
214
|
+
required: false
|
|
215
|
+
description: >-
|
|
216
|
+
First-class satisfaction state for this decision. Missing satisfaction is
|
|
217
|
+
valid legacy data, but consumers must derive review_needed=true rather
|
|
218
|
+
than treating the decision as satisfied.
|
|
219
|
+
|
|
220
|
+
SATISFACTION:
|
|
221
|
+
1:
|
|
222
|
+
id: DS1
|
|
223
|
+
field: state
|
|
224
|
+
parent: DECISION.satisfaction
|
|
225
|
+
type: string
|
|
226
|
+
required: true
|
|
227
|
+
description: >-
|
|
228
|
+
Canonical satisfaction state. This is the only satisfaction state field;
|
|
229
|
+
review_needed is derived from missing or stale protected state, not stored
|
|
230
|
+
as a fourth state.
|
|
231
|
+
validation:
|
|
232
|
+
- "Must be one of: open, provisionally_satisfied, user_confirmed_satisfied"
|
|
233
|
+
2:
|
|
234
|
+
id: DS2
|
|
235
|
+
field: evidence
|
|
236
|
+
parent: DECISION.satisfaction
|
|
237
|
+
type: string
|
|
238
|
+
required: false
|
|
239
|
+
description: >-
|
|
240
|
+
Evidence that an agent may attach when state is provisionally_satisfied.
|
|
241
|
+
Provisional satisfaction requires non-empty evidence that cites concrete
|
|
242
|
+
implemented behavior, tests, artifacts, or user-visible outcomes.
|
|
243
|
+
3:
|
|
244
|
+
id: DS3
|
|
245
|
+
field: user_confirmation
|
|
246
|
+
parent: DECISION.satisfaction
|
|
247
|
+
type: map
|
|
248
|
+
required: false
|
|
249
|
+
description: >-
|
|
250
|
+
Explicit user authority metadata required when state is
|
|
251
|
+
user_confirmed_satisfied. Agents must not create this state unless the
|
|
252
|
+
current user directly confirms the decision is satisfied.
|
|
253
|
+
children:
|
|
254
|
+
- field: confirmed_by
|
|
255
|
+
type: string
|
|
256
|
+
required: true
|
|
257
|
+
- field: confirmed_at
|
|
258
|
+
type: string
|
|
259
|
+
required: true
|
|
260
|
+
|
|
261
|
+
ALTERNATIVE:
|
|
262
|
+
1:
|
|
263
|
+
id: DA1
|
|
264
|
+
field: entry
|
|
265
|
+
type: map
|
|
266
|
+
required: true
|
|
267
|
+
description: >-
|
|
268
|
+
Each alternative is a structured entry within the decision's
|
|
269
|
+
alternatives list. At least one alternative must be present.
|
|
270
|
+
min_count: 1
|
|
271
|
+
2:
|
|
272
|
+
id: DA2
|
|
273
|
+
field: name
|
|
274
|
+
parent: ALTERNATIVE.entry
|
|
275
|
+
type: string
|
|
276
|
+
required: true
|
|
277
|
+
description: >-
|
|
278
|
+
Short name or bracketed label for this alternative
|
|
279
|
+
(e.g., '[Suite bundle first]').
|
|
280
|
+
validation:
|
|
281
|
+
- "Non-empty string"
|
|
282
|
+
3:
|
|
283
|
+
id: DA3
|
|
284
|
+
field: status
|
|
285
|
+
parent: ALTERNATIVE.entry
|
|
286
|
+
type: string
|
|
287
|
+
required: true
|
|
288
|
+
description: >-
|
|
289
|
+
Whether this alternative was chosen or rejected.
|
|
290
|
+
Exactly one alternative in each decision must be 'chosen'.
|
|
291
|
+
validation:
|
|
292
|
+
- "Must be one of: chosen, rejected"
|
|
293
|
+
4:
|
|
294
|
+
id: DA4
|
|
295
|
+
field: description
|
|
296
|
+
parent: ALTERNATIVE.entry
|
|
297
|
+
type: string
|
|
298
|
+
required: false
|
|
299
|
+
description: >-
|
|
300
|
+
Brief explanation of the alternative. May be omitted when the
|
|
301
|
+
name is self-explanatory.
|
|
302
|
+
|
|
303
|
+
ARCHIVE:
|
|
304
|
+
1:
|
|
305
|
+
id: DR1
|
|
306
|
+
field: summary
|
|
307
|
+
type: string
|
|
308
|
+
required: true
|
|
309
|
+
description: >-
|
|
310
|
+
Summary for a compacted decision. Format:
|
|
311
|
+
'Decision N (YYYY-MM-DD): [Choice] — <=15-word summary'.
|
|
312
|
+
Preserves decision number, date, and chosen alternative.
|
|
313
|
+
validation:
|
|
314
|
+
- "Must include decision number"
|
|
315
|
+
- "Must include date in YYYY-MM-DD format"
|
|
316
|
+
- "Must include chosen alternative"
|
|
317
|
+
- "Summary portion must be <=15 words"
|
|
318
|
+
2:
|
|
319
|
+
id: DR2
|
|
320
|
+
field: number
|
|
321
|
+
type: integer
|
|
322
|
+
required: false
|
|
323
|
+
description: >-
|
|
324
|
+
Decision number retained when a full decision is compacted. Legacy
|
|
325
|
+
compacted entries may expose the number only inside summary.
|
|
326
|
+
3:
|
|
327
|
+
id: DR3
|
|
328
|
+
field: date
|
|
329
|
+
type: string
|
|
330
|
+
format: "YYYY-MM-DD"
|
|
331
|
+
required: false
|
|
332
|
+
description: >-
|
|
333
|
+
Decision date retained when a full decision is compacted. Legacy
|
|
334
|
+
compacted entries may expose the date only inside summary.
|
|
335
|
+
4:
|
|
336
|
+
id: DR4
|
|
337
|
+
field: choice
|
|
338
|
+
type: string
|
|
339
|
+
required: false
|
|
340
|
+
description: >-
|
|
341
|
+
Chosen alternative retained when a full decision is compacted. This is
|
|
342
|
+
the source for compacted CLI outcome when present.
|
|
343
|
+
5:
|
|
344
|
+
id: DR5
|
|
345
|
+
field: outcome
|
|
346
|
+
type: string
|
|
347
|
+
required: false
|
|
348
|
+
description: >-
|
|
349
|
+
Outcome retained for structured consumers of compacted decisions. When
|
|
350
|
+
omitted by legacy entries, CLI output marks outcome missing instead of
|
|
351
|
+
requiring raw artifact or git-history fallback.
|
|
352
|
+
6:
|
|
353
|
+
id: DR6
|
|
354
|
+
field: feeds_into
|
|
355
|
+
type: string
|
|
356
|
+
required: false
|
|
357
|
+
description: >-
|
|
358
|
+
Explicit downstream references retained from the full decision when
|
|
359
|
+
present. Consumers must not infer downstream consequences when absent.
|
|
360
|
+
7:
|
|
361
|
+
id: DR7
|
|
362
|
+
field: satisfaction
|
|
363
|
+
type: map
|
|
364
|
+
required: false
|
|
365
|
+
description: >-
|
|
366
|
+
Satisfaction state retained when a confirmed full decision is compacted.
|
|
367
|
+
Legacy compacted entries may omit this field; such entries are valid but
|
|
368
|
+
review-needed, and compaction must not silently drop them.
|
|
369
|
+
|
|
370
|
+
VALIDATION:
|
|
371
|
+
1:
|
|
372
|
+
id: DV1
|
|
373
|
+
rule: unique_decision_numbers
|
|
374
|
+
severity: error
|
|
375
|
+
description: >-
|
|
376
|
+
Active decision entries must have unique numbers and remain ascending
|
|
377
|
+
by decision number. Do not reuse or renumber except when repairing
|
|
378
|
+
artifact corruption.
|
|
379
|
+
checks:
|
|
380
|
+
- "All decision numbers are unique across active and archived entries"
|
|
381
|
+
- "Active entries are in ascending order by decision number"
|
|
382
|
+
2:
|
|
383
|
+
id: DV2
|
|
384
|
+
rule: required_fields
|
|
385
|
+
severity: error
|
|
386
|
+
description: >-
|
|
387
|
+
Each full-detail decision entry must have: number, date, question,
|
|
388
|
+
context, alternatives, choice, reasoning, and confidence.
|
|
389
|
+
checks:
|
|
390
|
+
- "number is present and is a positive integer"
|
|
391
|
+
- "date is present and matches YYYY-MM-DD"
|
|
392
|
+
- "question is present and non-empty"
|
|
393
|
+
- "context is present and non-empty"
|
|
394
|
+
- "alternatives list is present with at least one entry"
|
|
395
|
+
- "choice is present and non-empty"
|
|
396
|
+
- "reasoning is present and non-empty"
|
|
397
|
+
- "confidence is present and is a valid label"
|
|
398
|
+
3:
|
|
399
|
+
id: DV3
|
|
400
|
+
rule: exactly_one_chosen
|
|
401
|
+
severity: error
|
|
402
|
+
description: >-
|
|
403
|
+
Exactly one alternative in each decision must have status 'chosen'.
|
|
404
|
+
checks:
|
|
405
|
+
- "Each decision has exactly one alternative with status: chosen"
|
|
406
|
+
4:
|
|
407
|
+
id: DV4
|
|
408
|
+
rule: compaction_thresholds
|
|
409
|
+
severity: warning
|
|
410
|
+
description: >-
|
|
411
|
+
Warn if the file exceeds compaction thresholds: >10 full-detail
|
|
412
|
+
entries or >40 one-line archive entries.
|
|
413
|
+
checks:
|
|
414
|
+
- "Full-detail entries <= 10"
|
|
415
|
+
- "One-line archive entries <= 40"
|
|
416
|
+
- "Total entries <= 50"
|
|
417
|
+
5:
|
|
418
|
+
id: DV5
|
|
419
|
+
rule: word_budget
|
|
420
|
+
severity: advisory
|
|
421
|
+
description: >-
|
|
422
|
+
Advisory check. Per-decision entry should be <=200 words.
|
|
423
|
+
checks:
|
|
424
|
+
- "Per-decision word count <= 200"
|
|
425
|
+
6:
|
|
426
|
+
id: DV6
|
|
427
|
+
rule: satisfaction_contract
|
|
428
|
+
severity: error
|
|
429
|
+
description: >-
|
|
430
|
+
Satisfaction, when present, must use the canonical state model. Agents
|
|
431
|
+
may mark provisional satisfaction only with evidence. User-confirmed
|
|
432
|
+
satisfaction requires explicit user-confirmation metadata.
|
|
433
|
+
checks:
|
|
434
|
+
- "satisfaction.state is one of: open, provisionally_satisfied, user_confirmed_satisfied"
|
|
435
|
+
- "provisionally_satisfied requires non-empty satisfaction.evidence"
|
|
436
|
+
- "user_confirmed_satisfied requires satisfaction.user_confirmation.confirmed_by and confirmed_at"
|
|
437
|
+
7:
|
|
438
|
+
id: DV7
|
|
439
|
+
rule: legacy_review_needed
|
|
440
|
+
severity: advisory
|
|
441
|
+
description: >-
|
|
442
|
+
Active or archived legacy decisions without satisfaction remain valid but
|
|
443
|
+
consumers must derive review_needed=true rather than silently treating
|
|
444
|
+
them as satisfied.
|
|
445
|
+
checks:
|
|
446
|
+
- "missing satisfaction is valid legacy data"
|
|
447
|
+
- "missing satisfaction derives review_needed=true"
|
|
448
|
+
8:
|
|
449
|
+
id: DV8
|
|
450
|
+
rule: stale_review_trigger
|
|
451
|
+
severity: warning
|
|
452
|
+
description: >-
|
|
453
|
+
Open, provisionally satisfied, or legacy review-needed decisions are
|
|
454
|
+
protected from compaction/drop. If such decisions exceed compaction
|
|
455
|
+
budgets, or are encountered during health audits or release closeout,
|
|
456
|
+
user review is required before treating the state as healthy or
|
|
457
|
+
release-ready.
|
|
458
|
+
checks:
|
|
459
|
+
- "open decisions are protected"
|
|
460
|
+
- "provisionally_satisfied decisions are protected"
|
|
461
|
+
- "legacy missing satisfaction is protected until reviewed"
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Design Artifact Schema
|
|
2
|
+
#
|
|
3
|
+
# Visual identity system maintained by visualisera. Defines design tokens,
|
|
4
|
+
# palette, typography, spacing, and component styling rules.
|
|
5
|
+
#
|
|
6
|
+
# Note: DESIGN.md is a human-facing Markdown artifact. It remains at the
|
|
7
|
+
# project root and is not migrated to YAML. This schema exists for validation
|
|
8
|
+
# and CLI discovery consistency.
|
|
9
|
+
|
|
10
|
+
meta:
|
|
11
|
+
name: design
|
|
12
|
+
version: "1.0.0"
|
|
13
|
+
description: >-
|
|
14
|
+
Visual identity system. Produced by visualisera. Consumed by capabilities
|
|
15
|
+
that need visual identity context. Human-facing: remains Markdown at root.
|
|
16
|
+
artifact_type: human_facing
|
|
17
|
+
path: "DESIGN.md"
|
|
18
|
+
producer: visualisera
|
|
19
|
+
consumers: [dokumentera, hej, inspektera, realisera, visionera, visualisera]
|
|
20
|
+
format: markdown
|
|
21
|
+
|
|
22
|
+
GROUP_PREFIXES:
|
|
23
|
+
BUDGET: DB
|
|
24
|
+
TOKEN: DT
|
|
25
|
+
VALIDATION: DV
|
|
26
|
+
|
|
27
|
+
BUDGET:
|
|
28
|
+
1:
|
|
29
|
+
id: DB1
|
|
30
|
+
token_budget: 2000
|
|
31
|
+
description: >-
|
|
32
|
+
Maximum tokens for DESIGN.md content. Exceeding triggers compaction.
|
|
33
|
+
|
|
34
|
+
TOKEN:
|
|
35
|
+
1:
|
|
36
|
+
id: DT1
|
|
37
|
+
field: category
|
|
38
|
+
type: string
|
|
39
|
+
required: true
|
|
40
|
+
description: >-
|
|
41
|
+
Token category: palette, typography, spacing, component, or animation.
|
|
42
|
+
2:
|
|
43
|
+
id: DT2
|
|
44
|
+
field: name
|
|
45
|
+
type: string
|
|
46
|
+
required: true
|
|
47
|
+
description: >-
|
|
48
|
+
Token name (e.g., "primary", "body-text", "gap-md").
|
|
49
|
+
3:
|
|
50
|
+
id: DT3
|
|
51
|
+
field: value
|
|
52
|
+
type: string
|
|
53
|
+
required: true
|
|
54
|
+
description: >-
|
|
55
|
+
Token value (e.g., hex color, font stack, spacing unit).
|