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,342 @@
|
|
|
1
|
+
# Plan Artifact Schema
|
|
2
|
+
#
|
|
3
|
+
# Active work plan maintained by planera. Each plan captures what will be built,
|
|
4
|
+
# why, constraints, scope boundaries, design approach, tasks with dependencies
|
|
5
|
+
# and acceptance criteria, overall acceptance, and surprises.
|
|
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 PLAN.md → v2 plan.yaml ──
|
|
11
|
+
#
|
|
12
|
+
# v1 Field v2 Field v2 ID
|
|
13
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
14
|
+
# <!-- Level: light/full --> HEADER.level PL1
|
|
15
|
+
# <!-- Created: date --> HEADER.created PL2
|
|
16
|
+
# <!-- Status: active/completed --> HEADER.status PL3
|
|
17
|
+
# <!-- Reviewed: date --> HEADER.reviewed PL4
|
|
18
|
+
# <!-- Critic issues: N found... --> HEADER.critic_issues PL5
|
|
19
|
+
# <!-- Revised: description --> HEADER.revised PL6
|
|
20
|
+
# # Plan: <title> HEADER.title PL7
|
|
21
|
+
# ## What PLAN.what PL8
|
|
22
|
+
# ## Why PLAN.why PL9
|
|
23
|
+
# ## Constraints PLAN.constraints PL10
|
|
24
|
+
# ## Scope / **In**: <list> SCOPE.included PL11
|
|
25
|
+
# ## Scope / **Out**: <list> SCOPE.excluded PL12
|
|
26
|
+
# ## Scope / **Deferred**: <list> SCOPE.deferred PL13
|
|
27
|
+
# ## Design PLAN.design PL14
|
|
28
|
+
# ### Task N: <name> TASK.number PL15
|
|
29
|
+
# (task name from heading) TASK.name PL16
|
|
30
|
+
# **Depends on**: <text> TASK.depends_on PL17
|
|
31
|
+
# **Status**: <status> TASK.status PL18
|
|
32
|
+
# **Acceptance**: <criteria list> TASK.acceptance PL19
|
|
33
|
+
# ## Overall Acceptance PLAN.overall_acceptance PL20
|
|
34
|
+
# ## Surprises PLAN.surprises PL21
|
|
35
|
+
#
|
|
36
|
+
# Protocol references:
|
|
37
|
+
# status visual tokens: VT1-VT4 (protocol.yaml VISUAL_TOKENS)
|
|
38
|
+
# list item marker: VT15 (protocol.yaml VISUAL_TOKENS)
|
|
39
|
+
|
|
40
|
+
meta:
|
|
41
|
+
name: plan
|
|
42
|
+
version: "1.0.0"
|
|
43
|
+
description: >-
|
|
44
|
+
Active work plan. Produced by planera and updated by plan executors.
|
|
45
|
+
Consumed by capabilities that inspect or execute plan state.
|
|
46
|
+
artifact_type: agent_facing
|
|
47
|
+
path: ".agentera/plan.yaml"
|
|
48
|
+
producer: [orkestrera, planera, realisera]
|
|
49
|
+
consumers: [hej, inspektera, orkestrera, planera, realisera]
|
|
50
|
+
format: yaml
|
|
51
|
+
|
|
52
|
+
GROUP_PREFIXES:
|
|
53
|
+
BUDGET: PB
|
|
54
|
+
HEADER: PH
|
|
55
|
+
PLAN: PL
|
|
56
|
+
SCOPE: PS
|
|
57
|
+
TASK: PT
|
|
58
|
+
VALIDATION: PV
|
|
59
|
+
|
|
60
|
+
BUDGET:
|
|
61
|
+
1:
|
|
62
|
+
id: PB1
|
|
63
|
+
scope: per_task_entry
|
|
64
|
+
max_words: 100
|
|
65
|
+
description: >-
|
|
66
|
+
Maximum words per task entry. Budgets are guidelines, not hard
|
|
67
|
+
blockers.
|
|
68
|
+
2:
|
|
69
|
+
id: PB2
|
|
70
|
+
scope: full_file
|
|
71
|
+
max_words: 2500
|
|
72
|
+
description: >-
|
|
73
|
+
Maximum words for the full file. If a write would exceed this
|
|
74
|
+
budget, compact the plan (merge completed tasks, defer scope).
|
|
75
|
+
|
|
76
|
+
HEADER:
|
|
77
|
+
1:
|
|
78
|
+
id: PH1
|
|
79
|
+
field: level
|
|
80
|
+
type: string
|
|
81
|
+
required: true
|
|
82
|
+
description: >-
|
|
83
|
+
Plan detail level. 'light' for small scoped work; 'full' for
|
|
84
|
+
multi-task plans with explicit acceptance criteria and review.
|
|
85
|
+
validation:
|
|
86
|
+
- "Must be one of: light, full"
|
|
87
|
+
2:
|
|
88
|
+
id: PH2
|
|
89
|
+
field: created
|
|
90
|
+
type: string
|
|
91
|
+
format: "YYYY-MM-DD"
|
|
92
|
+
required: true
|
|
93
|
+
description: "Date the plan was created."
|
|
94
|
+
validation:
|
|
95
|
+
- "Must match YYYY-MM-DD format"
|
|
96
|
+
3:
|
|
97
|
+
id: PH3
|
|
98
|
+
field: status
|
|
99
|
+
type: string
|
|
100
|
+
required: true
|
|
101
|
+
description: >-
|
|
102
|
+
Plan lifecycle status. Active plans are being executed; complete
|
|
103
|
+
plans are candidates for archival.
|
|
104
|
+
validation:
|
|
105
|
+
- "Must be one of: active, complete"
|
|
106
|
+
4:
|
|
107
|
+
id: PH4
|
|
108
|
+
field: reviewed
|
|
109
|
+
type: string
|
|
110
|
+
format: "YYYY-MM-DD"
|
|
111
|
+
required: false
|
|
112
|
+
description: >-
|
|
113
|
+
Date the plan was last reviewed via adversarial critic pass.
|
|
114
|
+
Absent for light-level plans that skip review.
|
|
115
|
+
5:
|
|
116
|
+
id: PH5
|
|
117
|
+
field: critic_issues
|
|
118
|
+
type: string
|
|
119
|
+
required: false
|
|
120
|
+
description: >-
|
|
121
|
+
Summary of critic review findings. Format: 'N found, M addressed,
|
|
122
|
+
K dismissed'. Absent for light-level plans or pre-review state.
|
|
123
|
+
6:
|
|
124
|
+
id: PH6
|
|
125
|
+
field: revised
|
|
126
|
+
type: string
|
|
127
|
+
required: false
|
|
128
|
+
description: >-
|
|
129
|
+
Description of what was revised after critic review. Absent for
|
|
130
|
+
light-level plans or pre-review state.
|
|
131
|
+
7:
|
|
132
|
+
id: PH7
|
|
133
|
+
field: title
|
|
134
|
+
type: string
|
|
135
|
+
required: true
|
|
136
|
+
description: >-
|
|
137
|
+
Short plan title. Used in archive naming and plan listing.
|
|
138
|
+
Format: 'Plan: <descriptive name>'.
|
|
139
|
+
validation:
|
|
140
|
+
- "Non-empty string"
|
|
141
|
+
|
|
142
|
+
PLAN:
|
|
143
|
+
1:
|
|
144
|
+
id: PL8
|
|
145
|
+
field: what
|
|
146
|
+
type: string
|
|
147
|
+
required: true
|
|
148
|
+
description: >-
|
|
149
|
+
What the plan will build or accomplish. Plain-language summary
|
|
150
|
+
of the plan's scope and deliverables.
|
|
151
|
+
validation:
|
|
152
|
+
- "Non-empty string"
|
|
153
|
+
2:
|
|
154
|
+
id: PL9
|
|
155
|
+
field: why
|
|
156
|
+
type: string
|
|
157
|
+
required: true
|
|
158
|
+
description: >-
|
|
159
|
+
Why this plan exists. References decisions, vision, or constraints
|
|
160
|
+
that motivate the work.
|
|
161
|
+
validation:
|
|
162
|
+
- "Non-empty string"
|
|
163
|
+
3:
|
|
164
|
+
id: PL10
|
|
165
|
+
field: constraints
|
|
166
|
+
type: string
|
|
167
|
+
required: false
|
|
168
|
+
description: >-
|
|
169
|
+
Hard constraints governing plan execution. References decision
|
|
170
|
+
labels (firm/provisional/exploratory) and project-level rules.
|
|
171
|
+
4:
|
|
172
|
+
id: PL14
|
|
173
|
+
field: design
|
|
174
|
+
type: string
|
|
175
|
+
required: false
|
|
176
|
+
description: >-
|
|
177
|
+
Design approach for the plan. Describes the strategy, patterns,
|
|
178
|
+
and structural decisions. Required for full-level plans.
|
|
179
|
+
5:
|
|
180
|
+
id: PL20
|
|
181
|
+
field: overall_acceptance
|
|
182
|
+
type: string
|
|
183
|
+
required: false
|
|
184
|
+
description: >-
|
|
185
|
+
Plan-level acceptance criteria. Criteria that span multiple tasks
|
|
186
|
+
and must hold when the entire plan is complete.
|
|
187
|
+
6:
|
|
188
|
+
id: PL21
|
|
189
|
+
field: surprises
|
|
190
|
+
type: string
|
|
191
|
+
required: false
|
|
192
|
+
description: >-
|
|
193
|
+
Runtime surprises discovered during plan execution. Populated
|
|
194
|
+
by realisera when reality diverges from plan. Default: empty.
|
|
195
|
+
7:
|
|
196
|
+
id: PL22
|
|
197
|
+
field: previous_plan_archived
|
|
198
|
+
type: string
|
|
199
|
+
required: false
|
|
200
|
+
description: >-
|
|
201
|
+
Path to the previous active plan archived when this plan was created.
|
|
202
|
+
Preserves plan lineage without changing lifecycle status.
|
|
203
|
+
|
|
204
|
+
SCOPE:
|
|
205
|
+
1:
|
|
206
|
+
id: PS11
|
|
207
|
+
field: included
|
|
208
|
+
type: list[string]
|
|
209
|
+
required: true
|
|
210
|
+
description: >-
|
|
211
|
+
Work items and surfaces in scope. Each entry names a deliverable,
|
|
212
|
+
file, or system boundary that the plan covers.
|
|
213
|
+
validation:
|
|
214
|
+
- "At least one entry required"
|
|
215
|
+
2:
|
|
216
|
+
id: PS12
|
|
217
|
+
field: excluded
|
|
218
|
+
type: list[string]
|
|
219
|
+
required: true
|
|
220
|
+
description: >-
|
|
221
|
+
Work items explicitly out of scope. Prevents scope creep by
|
|
222
|
+
recording what was considered and deferred.
|
|
223
|
+
3:
|
|
224
|
+
id: PS13
|
|
225
|
+
field: deferred
|
|
226
|
+
type: list[string]
|
|
227
|
+
required: false
|
|
228
|
+
description: >-
|
|
229
|
+
Work items deferred to a future plan. Distinguished from
|
|
230
|
+
excluded items by having acknowledged future intent.
|
|
231
|
+
|
|
232
|
+
TASK:
|
|
233
|
+
1:
|
|
234
|
+
id: PT15
|
|
235
|
+
field: number
|
|
236
|
+
type: integer
|
|
237
|
+
required: true
|
|
238
|
+
description: >-
|
|
239
|
+
Task number within the plan. Sequential, starting from 1.
|
|
240
|
+
May include a descriptive name (e.g., 'Task 2: Shared Protocol').
|
|
241
|
+
validation:
|
|
242
|
+
- "Must be a positive integer"
|
|
243
|
+
- "Must be unique within the plan"
|
|
244
|
+
2:
|
|
245
|
+
id: PT16
|
|
246
|
+
field: name
|
|
247
|
+
type: string
|
|
248
|
+
required: true
|
|
249
|
+
description: >-
|
|
250
|
+
Short descriptive name for the task. Appears in task headings
|
|
251
|
+
and progress tracking.
|
|
252
|
+
validation:
|
|
253
|
+
- "Non-empty string"
|
|
254
|
+
3:
|
|
255
|
+
id: PT17
|
|
256
|
+
field: depends_on
|
|
257
|
+
type: list[string]
|
|
258
|
+
required: false
|
|
259
|
+
description: >-
|
|
260
|
+
Task dependencies. References task numbers or names that must
|
|
261
|
+
complete before this task can start. Empty for root tasks.
|
|
262
|
+
4:
|
|
263
|
+
id: PT18
|
|
264
|
+
field: status
|
|
265
|
+
type: string
|
|
266
|
+
required: true
|
|
267
|
+
description: >-
|
|
268
|
+
Task execution status. Uses visual tokens from protocol.yaml
|
|
269
|
+
VISUAL_TOKENS (VT1-VT4) for display.
|
|
270
|
+
validation:
|
|
271
|
+
- "Must be one of: complete, in_progress, pending, blocked"
|
|
272
|
+
5:
|
|
273
|
+
id: PT19
|
|
274
|
+
field: acceptance
|
|
275
|
+
type: list[string]
|
|
276
|
+
required: false
|
|
277
|
+
description: >-
|
|
278
|
+
Acceptance criteria for this task. Each entry is a GIVEN/WHEN/THEN
|
|
279
|
+
statement that must hold for the task to be considered complete.
|
|
280
|
+
Required for full-level plans.
|
|
281
|
+
|
|
282
|
+
VALIDATION:
|
|
283
|
+
1:
|
|
284
|
+
id: PV1
|
|
285
|
+
rule: unique_task_numbers
|
|
286
|
+
severity: error
|
|
287
|
+
description: >-
|
|
288
|
+
Task numbers must be unique within a plan and sequential.
|
|
289
|
+
checks:
|
|
290
|
+
- "All task numbers are unique"
|
|
291
|
+
- "Task numbers are sequential starting from 1"
|
|
292
|
+
2:
|
|
293
|
+
id: PV2
|
|
294
|
+
rule: required_fields
|
|
295
|
+
severity: error
|
|
296
|
+
description: >-
|
|
297
|
+
The plan must have: level, created, status, title, what, why,
|
|
298
|
+
scope.included, scope.excluded, and at least one task. Each task
|
|
299
|
+
must have number, name, and status.
|
|
300
|
+
checks:
|
|
301
|
+
- "level is present and is 'light' or 'full'"
|
|
302
|
+
- "created is present and matches YYYY-MM-DD"
|
|
303
|
+
- "status is present and is 'active' or 'completed'"
|
|
304
|
+
- "title is present and non-empty"
|
|
305
|
+
- "what is present and non-empty"
|
|
306
|
+
- "why is present and non-empty"
|
|
307
|
+
- "scope.included has at least one entry"
|
|
308
|
+
- "scope.excluded is present (may be empty list)"
|
|
309
|
+
- "tasks has at least one entry"
|
|
310
|
+
- "each task has number, name, and status"
|
|
311
|
+
3:
|
|
312
|
+
id: PV3
|
|
313
|
+
rule: full_level_requirements
|
|
314
|
+
severity: error
|
|
315
|
+
description: >-
|
|
316
|
+
Full-level plans must have: design, reviewed, parseable non-zero
|
|
317
|
+
critic_issues, and acceptance criteria on each task.
|
|
318
|
+
checks:
|
|
319
|
+
- "design is present for full-level plans"
|
|
320
|
+
- "reviewed is present for full-level plans"
|
|
321
|
+
- "critic_issues is present and records at least one found issue for full-level plans"
|
|
322
|
+
- "each task has acceptance criteria for full-level plans"
|
|
323
|
+
4:
|
|
324
|
+
id: PV4
|
|
325
|
+
rule: dependency_references
|
|
326
|
+
severity: error
|
|
327
|
+
description: >-
|
|
328
|
+
Task depends_on references must point to valid task numbers
|
|
329
|
+
within the same plan.
|
|
330
|
+
checks:
|
|
331
|
+
- "Each dependency references an existing task number"
|
|
332
|
+
- "No circular dependency chains"
|
|
333
|
+
5:
|
|
334
|
+
id: PV5
|
|
335
|
+
rule: word_budget
|
|
336
|
+
severity: advisory
|
|
337
|
+
description: >-
|
|
338
|
+
Advisory check. Per-task entry should be <=100 words; full file
|
|
339
|
+
should be <=2500 words.
|
|
340
|
+
checks:
|
|
341
|
+
- "Per-task word count <= 100"
|
|
342
|
+
- "Total file word count <= 2500"
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# Progress Artifact Schema
|
|
2
|
+
#
|
|
3
|
+
# Cycle-by-cycle operational log for realisera. Each entry records what happened
|
|
4
|
+
# in one development cycle: phase, work done, commit, discoveries, verification,
|
|
5
|
+
# next steps, and context envelope.
|
|
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 PROGRESS.md → v2 progress.yaml ──
|
|
11
|
+
#
|
|
12
|
+
# v1 Field v2 Field v2 ID
|
|
13
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
14
|
+
# ## Cycle N · date · type-prefix CYCLE.number PR1
|
|
15
|
+
# (date from heading) CYCLE.timestamp PR2
|
|
16
|
+
# (type-prefix from heading) CYCLE.type PR3
|
|
17
|
+
# **Phase**: <phase> CYCLE.phase PR4
|
|
18
|
+
# **What**: <text> CYCLE.what PR5
|
|
19
|
+
# **Commit**: <hash/N/A> CYCLE.commit PR6
|
|
20
|
+
# **Inspiration**: <text> CYCLE.inspiration PR7
|
|
21
|
+
# **Discovered**: <text> CYCLE.discovered PR8
|
|
22
|
+
# **Verified**: <text> CYCLE.verified PR9
|
|
23
|
+
# **Next**: <text> CYCLE.next PR10
|
|
24
|
+
# **Context**: <text> CYCLE.context PR11
|
|
25
|
+
# (intent from Context) CONTEXT.intent PT1
|
|
26
|
+
# (constraints from Context) CONTEXT.constraints PT2
|
|
27
|
+
# (unknowns from Context) CONTEXT.unknowns PT3
|
|
28
|
+
# (scope from Context) CONTEXT.scope PT4
|
|
29
|
+
# ## Archived Cycles (implicit section) —
|
|
30
|
+
# - Cycle N (date): summary ARCHIVE.summary PA1
|
|
31
|
+
#
|
|
32
|
+
# Protocol references:
|
|
33
|
+
# phase: PH1-PH5 (protocol.yaml PHASES)
|
|
34
|
+
# type: conventional commit prefix (feat/fix/docs/refactor/chore/test)
|
|
35
|
+
|
|
36
|
+
meta:
|
|
37
|
+
name: progress
|
|
38
|
+
version: "1.0.0"
|
|
39
|
+
description: >-
|
|
40
|
+
Cycle-by-cycle operational log. Produced by realisera. Consumed by
|
|
41
|
+
capabilities that need recent work history and verification evidence.
|
|
42
|
+
artifact_type: agent_facing
|
|
43
|
+
path: ".agentera/progress.yaml"
|
|
44
|
+
producer: realisera
|
|
45
|
+
consumers: [dokumentera, hej, inspektera, optimera, orkestrera, planera, realisera, visionera, visualisera]
|
|
46
|
+
format: yaml
|
|
47
|
+
|
|
48
|
+
GROUP_PREFIXES:
|
|
49
|
+
BUDGET: PB
|
|
50
|
+
COMPACTION: PX
|
|
51
|
+
CYCLE: PR
|
|
52
|
+
CONTEXT: PT
|
|
53
|
+
ARCHIVE: PA
|
|
54
|
+
VALIDATION: PV
|
|
55
|
+
|
|
56
|
+
BUDGET:
|
|
57
|
+
1:
|
|
58
|
+
id: PB1
|
|
59
|
+
scope: per_cycle_entry
|
|
60
|
+
max_words: 500
|
|
61
|
+
description: >-
|
|
62
|
+
Maximum words per cycle entry. Budgets are guidelines, not hard
|
|
63
|
+
blockers; a 510-word entry is fine, a 1200-word entry signals
|
|
64
|
+
missing output constraints.
|
|
65
|
+
2:
|
|
66
|
+
id: PB2
|
|
67
|
+
scope: full_file
|
|
68
|
+
max_words: 3000
|
|
69
|
+
description: >-
|
|
70
|
+
Maximum words for the full file. If a write would exceed this
|
|
71
|
+
budget, compact first (see COMPACTION group).
|
|
72
|
+
|
|
73
|
+
COMPACTION:
|
|
74
|
+
1:
|
|
75
|
+
id: PX1
|
|
76
|
+
rule: uniform_10_40_50
|
|
77
|
+
description: >-
|
|
78
|
+
Growing artifacts follow a uniform 10/40/50 rule: 10 full-detail
|
|
79
|
+
entries, 40 one-line archive entries, drop beyond 50 total.
|
|
80
|
+
2:
|
|
81
|
+
id: PX2
|
|
82
|
+
full_detail:
|
|
83
|
+
max_entries: 10
|
|
84
|
+
selection: "10 most recent cycles"
|
|
85
|
+
format: "Standard cycle entry format (all fields)"
|
|
86
|
+
description: >-
|
|
87
|
+
The 10 most recent cycles are kept in full detail with all fields.
|
|
88
|
+
3:
|
|
89
|
+
id: PX3
|
|
90
|
+
one_line_archive:
|
|
91
|
+
max_entries: 40
|
|
92
|
+
selection: "Cycles 11 through 50"
|
|
93
|
+
format: "Cycle N (YYYY-MM-DD): <=15-word summary"
|
|
94
|
+
fields: [number, timestamp, summary]
|
|
95
|
+
description: >-
|
|
96
|
+
Cycles 11 through 50 are collapsed to one-line format under the
|
|
97
|
+
archive section. One-line summaries preserve cycle number, date,
|
|
98
|
+
and work-type, enough for trend analysis by consuming skills.
|
|
99
|
+
4:
|
|
100
|
+
id: PX4
|
|
101
|
+
dropped:
|
|
102
|
+
threshold: 50
|
|
103
|
+
action: "Removed entirely"
|
|
104
|
+
description: >-
|
|
105
|
+
Cycles older than 50 are dropped entirely.
|
|
106
|
+
5:
|
|
107
|
+
id: PX5
|
|
108
|
+
trigger: "When realisera writes a new cycle entry"
|
|
109
|
+
description: >-
|
|
110
|
+
Compaction runs when the producing skill writes a new entry.
|
|
111
|
+
If >10 full-detail entries exist, collapse the oldest to one-line.
|
|
112
|
+
If >40 one-line entries exist, drop the oldest.
|
|
113
|
+
6:
|
|
114
|
+
id: PX6
|
|
115
|
+
archive_section:
|
|
116
|
+
heading: "Archived Cycles"
|
|
117
|
+
placement: "Below recent cycles"
|
|
118
|
+
description: >-
|
|
119
|
+
Archive entries sit below the recent cycles section.
|
|
120
|
+
|
|
121
|
+
CYCLE:
|
|
122
|
+
1:
|
|
123
|
+
id: PR1
|
|
124
|
+
field: number
|
|
125
|
+
type: integer
|
|
126
|
+
required: true
|
|
127
|
+
description: >-
|
|
128
|
+
Monotonically increasing cycle number. One greater than the
|
|
129
|
+
highest cycle number in active and archived entries. Do not
|
|
130
|
+
reuse or renumber except when repairing artifact corruption.
|
|
131
|
+
validation:
|
|
132
|
+
- "Must be a positive integer"
|
|
133
|
+
- "Must be unique across active and archived entries"
|
|
134
|
+
- "Must be one greater than the previous highest"
|
|
135
|
+
2:
|
|
136
|
+
id: PR2
|
|
137
|
+
field: timestamp
|
|
138
|
+
type: string
|
|
139
|
+
format: "YYYY-MM-DD HH:MM"
|
|
140
|
+
required: true
|
|
141
|
+
description: "When the cycle was recorded."
|
|
142
|
+
validation:
|
|
143
|
+
- "Must match YYYY-MM-DD HH:MM format"
|
|
144
|
+
3:
|
|
145
|
+
id: PR3
|
|
146
|
+
field: type
|
|
147
|
+
type: string
|
|
148
|
+
required: true
|
|
149
|
+
description: >-
|
|
150
|
+
Conventional commit prefix extracted from the work done.
|
|
151
|
+
One of: feat, fix, docs, refactor, chore, test.
|
|
152
|
+
validation:
|
|
153
|
+
- "Must be one of: feat, fix, docs, refactor, chore, test"
|
|
154
|
+
4:
|
|
155
|
+
id: PR4
|
|
156
|
+
field: phase
|
|
157
|
+
type: string
|
|
158
|
+
required: true
|
|
159
|
+
description: >-
|
|
160
|
+
Which ISS-19 phase the cycle belongs to. References protocol.yaml
|
|
161
|
+
PHASES (PH1-PH5).
|
|
162
|
+
protocol_ref: PHASES
|
|
163
|
+
validation:
|
|
164
|
+
- "Must be one of: envision, deliberate, plan, build, audit"
|
|
165
|
+
5:
|
|
166
|
+
id: PR5
|
|
167
|
+
field: what
|
|
168
|
+
type: string
|
|
169
|
+
required: true
|
|
170
|
+
description: "What was done in this cycle. Prose summary of work performed."
|
|
171
|
+
validation:
|
|
172
|
+
- "Non-empty string"
|
|
173
|
+
6:
|
|
174
|
+
id: PR6
|
|
175
|
+
field: commit
|
|
176
|
+
type: string
|
|
177
|
+
required: true
|
|
178
|
+
description: >-
|
|
179
|
+
Git commit that contains the product change for this cycle—not the commit
|
|
180
|
+
that last edited progress metadata. Use `pending` until that hash is known;
|
|
181
|
+
then the product commit hash, optionally with subject (e.g.
|
|
182
|
+
`abc1234 Speed up pytest suite`). Use `N/A: …` when no product commit was
|
|
183
|
+
made.
|
|
184
|
+
validation:
|
|
185
|
+
- "Non-empty string"
|
|
186
|
+
- "Use `pending` until the product-change commit hash is known; do not amend solely to backfill this field"
|
|
187
|
+
- >-
|
|
188
|
+
Hashes that do not resolve as commit objects in the local clone (another
|
|
189
|
+
machine's copy, shallow CI checkout, or not yet fetched) are intentionally
|
|
190
|
+
not flagged by progress validation or `agentera check backfill`; reconcile
|
|
191
|
+
with a full clone or forward-fill once the product commit exists locally
|
|
192
|
+
7:
|
|
193
|
+
id: PR7
|
|
194
|
+
field: inspiration
|
|
195
|
+
type: string
|
|
196
|
+
required: false
|
|
197
|
+
description: >-
|
|
198
|
+
What prompted this cycle. References to active plan tasks,
|
|
199
|
+
decisions, or conventions that drove the work.
|
|
200
|
+
8:
|
|
201
|
+
id: PR8
|
|
202
|
+
field: discovered
|
|
203
|
+
type: string
|
|
204
|
+
required: false
|
|
205
|
+
description: >-
|
|
206
|
+
Unexpected findings during the cycle. Things learned that were
|
|
207
|
+
not known before starting.
|
|
208
|
+
9:
|
|
209
|
+
id: PR9
|
|
210
|
+
field: verified
|
|
211
|
+
type: string
|
|
212
|
+
required: false
|
|
213
|
+
description: >-
|
|
214
|
+
Evidence that the work was verified. Test commands run, validation
|
|
215
|
+
passed, manual checks performed.
|
|
216
|
+
10:
|
|
217
|
+
id: PR10
|
|
218
|
+
field: next
|
|
219
|
+
type: string
|
|
220
|
+
required: false
|
|
221
|
+
description: >-
|
|
222
|
+
What should happen next. Guidance for subsequent cycles.
|
|
223
|
+
Explicit about scope boundaries to prevent scope creep.
|
|
224
|
+
11:
|
|
225
|
+
id: PR11
|
|
226
|
+
field: context
|
|
227
|
+
type: map
|
|
228
|
+
required: true
|
|
229
|
+
description: >-
|
|
230
|
+
Context envelope capturing intent, constraints, unknowns, and
|
|
231
|
+
scope for this cycle. Contains sub-fields defined in CONTEXT group.
|
|
232
|
+
|
|
233
|
+
CONTEXT:
|
|
234
|
+
1:
|
|
235
|
+
id: PT1
|
|
236
|
+
field: intent
|
|
237
|
+
parent: CYCLE.context
|
|
238
|
+
type: string
|
|
239
|
+
required: true
|
|
240
|
+
description: "What this cycle set out to accomplish."
|
|
241
|
+
2:
|
|
242
|
+
id: PT2
|
|
243
|
+
field: constraints
|
|
244
|
+
parent: CYCLE.context
|
|
245
|
+
type: string
|
|
246
|
+
required: false
|
|
247
|
+
description: "Boundaries: what was explicitly out of scope or constrained."
|
|
248
|
+
3:
|
|
249
|
+
id: PT3
|
|
250
|
+
field: unknowns
|
|
251
|
+
parent: CYCLE.context
|
|
252
|
+
type: string
|
|
253
|
+
required: false
|
|
254
|
+
description: "Things not known at cycle start. May be 'none'."
|
|
255
|
+
4:
|
|
256
|
+
id: PT4
|
|
257
|
+
field: scope
|
|
258
|
+
parent: CYCLE.context
|
|
259
|
+
type: string
|
|
260
|
+
required: false
|
|
261
|
+
description: "Files and surfaces modified or affected."
|
|
262
|
+
|
|
263
|
+
ARCHIVE:
|
|
264
|
+
1:
|
|
265
|
+
id: PA1
|
|
266
|
+
field: summary
|
|
267
|
+
type: string
|
|
268
|
+
required: true
|
|
269
|
+
description: >-
|
|
270
|
+
One-line archive entry for a compacted cycle. Format:
|
|
271
|
+
'Cycle N (YYYY-MM-DD): <=15-word summary'.
|
|
272
|
+
Preserves cycle number, date, and work-type for trend analysis.
|
|
273
|
+
validation:
|
|
274
|
+
- "Must include cycle number"
|
|
275
|
+
- "Must include date in YYYY-MM-DD format"
|
|
276
|
+
- "Summary portion must be <=15 words"
|
|
277
|
+
|
|
278
|
+
VALIDATION:
|
|
279
|
+
1:
|
|
280
|
+
id: PV1
|
|
281
|
+
rule: unique_cycle_numbers
|
|
282
|
+
severity: error
|
|
283
|
+
description: >-
|
|
284
|
+
Active cycle entries must have unique numbers and remain descending
|
|
285
|
+
by cycle number, newest first. Do not reuse or renumber except when
|
|
286
|
+
repairing artifact corruption.
|
|
287
|
+
checks:
|
|
288
|
+
- "All cycle numbers are unique across active and archived entries"
|
|
289
|
+
- "Active entries are in descending order by cycle number"
|
|
290
|
+
2:
|
|
291
|
+
id: PV2
|
|
292
|
+
rule: required_fields
|
|
293
|
+
severity: error
|
|
294
|
+
description: >-
|
|
295
|
+
Each full-detail cycle entry must have: number, timestamp, type,
|
|
296
|
+
phase, what, commit, and context (with intent).
|
|
297
|
+
checks:
|
|
298
|
+
- "number is present and is a positive integer"
|
|
299
|
+
- "timestamp is present and matches YYYY-MM-DD HH:MM"
|
|
300
|
+
- "type is present and is a valid commit prefix"
|
|
301
|
+
- "phase is present and is a valid phase name"
|
|
302
|
+
- "what is present and non-empty"
|
|
303
|
+
- "commit is present"
|
|
304
|
+
- "context is present with intent sub-field"
|
|
305
|
+
3:
|
|
306
|
+
id: PV3
|
|
307
|
+
rule: compaction_thresholds
|
|
308
|
+
severity: warning
|
|
309
|
+
description: >-
|
|
310
|
+
Warn if the file exceeds compaction thresholds: >10 full-detail
|
|
311
|
+
entries or >40 one-line archive entries.
|
|
312
|
+
checks:
|
|
313
|
+
- "Full-detail entries <= 10"
|
|
314
|
+
- "One-line archive entries <= 40"
|
|
315
|
+
- "Total entries <= 50"
|
|
316
|
+
4:
|
|
317
|
+
id: PV4
|
|
318
|
+
rule: word_budget
|
|
319
|
+
severity: advisory
|
|
320
|
+
description: >-
|
|
321
|
+
Advisory check. Per-cycle entry should be <=500 words; full file
|
|
322
|
+
should be <=3000 words. Budgets are guidelines, not hard blockers.
|
|
323
|
+
checks:
|
|
324
|
+
- "Per-cycle word count <= 500"
|
|
325
|
+
- "Total file word count <= 3000"
|