agentera 3.0.0-dev.76 → 3.0.0-dev.78

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.
Files changed (57) hide show
  1. package/README.md +23 -0
  2. package/bundle/.agentera-build-source.json +5 -5
  3. package/bundle/CHANGELOG.md +10 -1
  4. package/bundle/UPGRADE.md +24 -5
  5. package/bundle/references/adapters/package-publication.json +4 -4
  6. package/bundle/references/adapters/package-registry.yaml +153 -151
  7. package/bundle/references/adapters/product-v1-reset.yaml +101 -0
  8. package/bundle/references/artifacts/glossary-entry-contract.yaml +163 -9
  9. package/bundle/references/artifacts/state-storage-authority.yaml +0 -5
  10. package/bundle/references/cli/update-channels.yaml +1 -1
  11. package/bundle/references/cli/vocabulary-index.yaml +2 -2
  12. package/bundle/references/cli/vocabulary.md +2 -3
  13. package/bundle/references/meta/retained-reference-authority.yaml +5 -0
  14. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +1 -20
  15. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +0 -31
  16. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +0 -25
  17. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +1 -1
  18. package/bundle/skills/agentera/schemas/artifacts/health.yaml +1 -36
  19. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +0 -31
  20. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +1 -35
  21. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +1 -25
  22. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +0 -19
  23. package/dist/.agentera-build-source.json +5 -5
  24. package/dist/analytics/personalGlossaryAdmission.js +1 -1
  25. package/dist/analytics/personalGlossaryCandidateProjection.js +96 -0
  26. package/dist/analytics/personalGlossaryCandidateProjectionModel.js +1 -0
  27. package/dist/analytics/personalGlossaryRefreshProjection.js +351 -0
  28. package/dist/capabilities/status/instructions.js +1 -1
  29. package/dist/cli/commands/personalGlossaryCandidateReads.js +12 -1
  30. package/dist/cli/commands/prime/briefOrientation.js +1 -1
  31. package/dist/cli/commands/prime/collectOrientationState.js +0 -7
  32. package/dist/cli/commands/prime/orientationOutput.js +3 -9
  33. package/dist/cli/commands/report.js +98 -8
  34. package/dist/cli/commands/upgrade.js +30 -0
  35. package/dist/cli/dispatch/index.js +7 -0
  36. package/dist/cli/dispatch/lifecycle.js +20 -0
  37. package/dist/cli/help.js +10 -3
  38. package/dist/cli/orientation/attention.js +1 -4
  39. package/dist/cli/productV1Eol.js +55 -0
  40. package/dist/cli/startupCompletenessContract.js +0 -1
  41. package/dist/cli/stateQuery.js +1 -1
  42. package/dist/registries/activationTuples.js +11 -2
  43. package/dist/registries/glossaryCandidateProjectionAuthority.js +154 -6
  44. package/dist/registries/glossaryCandidateProjectionContract.js +4 -0
  45. package/dist/registries/glossaryEntryContract.js +3 -3
  46. package/dist/registries/packagePublication.js +2 -2
  47. package/dist/runtime/nativeResourceCleanup.js +1 -0
  48. package/dist/upgrade/legacyAgentCleanup.js +1 -1
  49. package/dist/upgrade/migrateArtifactsV2ToV3.js +1 -27
  50. package/dist/upgrade/nextMajorDoctor.js +0 -21
  51. package/dist/upgrade/productV1Reset.js +515 -0
  52. package/dist/upgrade/productV1ResetAuthority.js +139 -0
  53. package/dist/upgrade/projectIntegration.js +4 -6
  54. package/dist/upgrade/upgradeOrchestrator.js +4 -12
  55. package/dist/validate/{v1LegacyCruft.js → glossaryVariantGuard.js} +3 -38
  56. package/package.json +2 -2
  57. package/dist/cli/commands/prime/v1Migration.js +0 -38
@@ -0,0 +1,101 @@
1
+ schema_version: agentera.productV1ResetInventory.v1
2
+ status: product_v1_eol
3
+ policy:
4
+ trigger: any_declared_product_v1_generation_evidence
5
+ schema_identifier_suffix_is_evidence: false
6
+ discovery: declared_roots_only
7
+ preserve_unlisted_state: true
8
+
9
+ source_authorities:
10
+ retired_resources: references/adapters/runtime-retired-resources.yaml
11
+ package_inventory: references/adapters/package-registry.yaml
12
+ runtime_lifecycle: references/adapters/runtime-lifecycle-authority.yaml
13
+
14
+ trigger_evidence:
15
+ project_artifacts:
16
+ - id: project.progress_markdown
17
+ generation: product_v1
18
+ triggers_reset: true
19
+ path: .agentera/PROGRESS.md
20
+ current_path: .agentera/progress.yaml
21
+ - id: project.plan_markdown
22
+ generation: product_v1
23
+ triggers_reset: true
24
+ path: .agentera/PLAN.md
25
+ current_path: .agentera/plan.yaml
26
+ - id: project.decisions_markdown
27
+ generation: product_v1
28
+ triggers_reset: true
29
+ path: .agentera/DECISIONS.md
30
+ current_path: .agentera/decisions.yaml
31
+ - id: project.health_markdown
32
+ generation: product_v1
33
+ triggers_reset: true
34
+ path: .agentera/HEALTH.md
35
+ current_path: .agentera/health.yaml
36
+ - id: project.docs_markdown
37
+ generation: product_v1
38
+ triggers_reset: true
39
+ path: .agentera/DOCS.md
40
+ current_path: .agentera/docs.yaml
41
+ - id: project.design_markdown
42
+ generation: product_v1
43
+ triggers_reset: true
44
+ path: .agentera/DESIGN.md
45
+ current_path: .agentera/design.yaml
46
+ - id: project.vision_markdown
47
+ generation: product_v1
48
+ triggers_reset: false
49
+ path: VISION.md
50
+ current_path: .agentera/vision.yaml
51
+ installation_package:
52
+ id: installation.package-major-1
53
+ generation: product_v1
54
+ triggers_reset: true
55
+ authority: references/adapters/package-registry.yaml
56
+ manifest: registry.json
57
+ selector: skills[0].version
58
+ predicate: semver_major_equals_1
59
+ runtime_resources:
60
+ authority: references/adapters/runtime-retired-resources.yaml
61
+ role: reset_scope_only
62
+ reason: Runtime identities also existed in supported v2, so identity or content alone cannot prove product v1.
63
+
64
+ scope_inventory:
65
+ - id: project.state
66
+ action: delete
67
+ owner: project_state_reset
68
+ bounded_root: project
69
+ targets: [.agentera, TODO.md, VISION.md]
70
+ - id: profile.state
71
+ action: delete
72
+ owner: profile_state_reset
73
+ bounded_root: profile_root
74
+ targets: [.]
75
+ - id: installation.state
76
+ action: delete
77
+ owner: installation_state_reset
78
+ bounded_root: install_root
79
+ targets: [.]
80
+ - id: runtime.resources
81
+ action: delete
82
+ owner: runtime_retired_resource_reset
83
+ bounded_root: runtime_declared_roots
84
+ targets:
85
+ - "references/adapters/runtime-retired-resources.yaml#diagnostic_inventory"
86
+ - "references/adapters/runtime-retired-resources.yaml#configuration_inventory"
87
+ - id: project.fresh-v3
88
+ action: recreate
89
+ owner: canonical_fresh_v3_initializer
90
+ bounded_root: project
91
+ targets: [.agentera]
92
+ - id: installation.current-package
93
+ action: recreate
94
+ owner: package_inventory_installer
95
+ bounded_root: install_root
96
+ targets: ["references/adapters/package-registry.yaml#records[agentera].bundle_surfaces"]
97
+ - id: runtime.canonical-skill
98
+ action: recreate
99
+ owner: runtime_lifecycle_installer
100
+ bounded_root: runtime_declared_roots
101
+ targets: ["references/adapters/runtime-lifecycle-authority.yaml#canonical_skill"]
@@ -59,6 +59,17 @@ term_occurrence:
59
59
 
60
60
  personal_mining_authority:
61
61
  status: active_partial
62
+ design_proposal_reconciliation:
63
+ proposal: docs/notes/personal-glossary-mining-design.md
64
+ proposal_authority: non_authoritative_external_note_not_tracked_in_this_checkout
65
+ implementation_status: shipped_with_inferred_admission_deferred
66
+ shipped:
67
+ - consented_refresh_produces_generation_bound_candidate_projection
68
+ - fixed_key_aggregate_candidate_and_abstention_explanations
69
+ - profile_full_preserves_existing_glossary_before_authorized_publication
70
+ deferred:
71
+ - inferred_automatic_admission
72
+ canonical_status: this_contract
62
73
  implementation_boundary: >-
63
74
  This section settles personal glossary mining identity, evidence provenance,
64
75
  consent, privacy, lifecycle, bounded explicit-discovery, public receipt construction,
@@ -67,7 +78,9 @@ personal_mining_authority:
67
78
  validation of host semantic evidence, explicit authorized personal
68
79
  publication, and Profile Full integration. It does not perform host
69
80
  semantic classification, project or public-state candidate reads, or
70
- project glossary integration.
81
+ project glossary integration. The consented refresh command is the shipped
82
+ projection producer. Inferred candidates remain review-required or abstain;
83
+ they are not automatically admitted.
71
84
  preserved_decisions: [prmnztjytv, mcsmqqitnm, zyvgyvjnsv]
72
85
  replacement:
73
86
  shared_primitive: shared_primitive
@@ -544,10 +557,25 @@ personal_mining_authority:
544
557
  outcomes: ordinary_permissions_and_io
545
558
  same_user_path_manipulation: outside_agentera_threat_model
546
559
  symlink_confinement: not_claimed
560
+ malformed_candidate_projection_replacement_exception:
561
+ scope: malformed_candidate_projection_replacement_only
562
+ authorization: explicit_consented_refresh_only
563
+ precondition: existing_owned_regular_file_is_malformed
564
+ target: exact_configured_candidate_projection_file
565
+ inspection: lstat_exact_target_without_following_symlinks
566
+ required_type: regular_file
567
+ reject: [symlink, non_regular_file, configured_path_mismatch, path_escape]
568
+ operation: atomic_regular_file_replacement
569
+ outside_scope: configured_path_use_as_provided
547
570
  rule: >-
548
571
  Agentera uses the configured profile path as provided. The host
549
572
  filesystem owns permissions, symlink behavior, and same-user path
550
- manipulation. Agentera does not add realpath or no-follow confinement.
573
+ manipulation. Agentera does not add realpath or no-follow confinement
574
+ except when an explicit consented refresh replaces its malformed
575
+ candidate projection. That operation inspects only the exact configured
576
+ target without following a final symlink, requires a regular file, and
577
+ rejects symlinks, non-files, target mismatches, and path escapes. All
578
+ other operations keep the configured-path behavior above.
551
579
  rule: >-
552
580
  Agentera deliberately selects only the configured user profile path for
553
581
  mining records. It never selects .agentera, TODO.md, progress, the
@@ -719,7 +747,71 @@ personal_mining_authority:
719
747
  candidate_retrieval operation. It does not add project or public-state
720
748
  candidate reads, host classification, CLI admission, review-disposition
721
749
  writes, profile publication, project-glossary access, or project-state
722
- effects.
750
+ effects.
751
+ refresh_production:
752
+ status: active
753
+ runtime: packages/cli/src/analytics/personalGlossaryRefreshProjection.ts#produceCurrentPersonalGlossaryProjection
754
+ trigger: explicit_consented_evidence_refresh_success
755
+ projection:
756
+ count: exactly_one
757
+ generation_binding: exact_published_evidence_generation
758
+ policy_binding: exact_personal_mining_policy_version
759
+ concurrency:
760
+ serialization: profile_local_exclusive_refresh_commit
761
+ lock_lifetime: before_evidence_publication_through_projection_binding_verification
762
+ ownership:
763
+ record: exact_regular_file_with_pid_random_token_and_creation_time
764
+ publication: prewritten_record_hard_linked_to_exclusive_canonical_path
765
+ inspection: no_follow_regular_file_with_stable_filesystem_identity
766
+ liveness: only_esrch_proves_owner_death
767
+ pid_reuse: live_or_indeterminate_pid_fails_closed
768
+ reclaim: one_exclusive_identity_checked_claim_replaces_only_a_proven_dead_owner
769
+ release: matching_token_record_and_filesystem_identity_only
770
+ unsafe: [malformed, foreign, symlink, non_file, changed_identity, indeterminate_owner]
771
+ recovery: inspect_exact_profile_local_lock_and_remove_only_after_verifying_no_refresh_owns_it_then_rerun_consented_refresh
772
+ contender:
773
+ refresh_outcome: failure
774
+ process_exit: nonzero
775
+ local_history_read: false
776
+ tier_write: false
777
+ projection_status: failed
778
+ projection_write: false
779
+ evidence_status: current_generation_remains_readable
780
+ recovery: npx -y agentera@next report refresh --consent local-history
781
+ partial_failure:
782
+ refresh_outcome: failure
783
+ process_exit: nonzero
784
+ evidence_status: published
785
+ projection_status: failed
786
+ tier_write_reporting: evidence_published_projection_not_written
787
+ current_generation: published_evidence_remains_current
788
+ safe_replacement:
789
+ authorization: explicit_consented_refresh_only
790
+ target: exact_configured_candidate_projection_file
791
+ precondition: existing_owned_regular_file_is_malformed
792
+ operation: atomic_regular_file_replacement
793
+ reject: [symlink, non_regular_file, configured_path_mismatch, path_escape]
794
+ filesystem_exception: personal_mining_authority.privacy.storage.filesystem.malformed_candidate_projection_replacement_exception
795
+ replaceable_state: [candidate_projection]
796
+ preserved_state:
797
+ - current_evidence_generation
798
+ - review_records
799
+ - personal_profile
800
+ - project_state
801
+ - project_glossary
802
+ rule: >-
803
+ A successful consented evidence refresh requires one projection bound to
804
+ that exact published generation and mining policy. Projection failure is
805
+ a nonzero refresh result but does not roll back the published evidence.
806
+ Authorized refreshes serialize evidence and projection commit; a
807
+ contender fails without reading history or writing evidence or projection.
808
+ The documented consented refresh reclaims a valid orphan only after owner
809
+ death is proven. Unknown ownership fails closed, and release removes only
810
+ the caller's unchanged token and filesystem identity.
811
+ A retry may replace only the exact configured owned regular projection
812
+ file; it rejects symlinks, non-files, path mismatches, and path escapes.
813
+ The refresh runtime mines and publishes this projection after evidence
814
+ publication succeeds.
723
815
  selection:
724
816
  candidates_max: 50
725
817
  project_ids_max_per_candidate: 100
@@ -742,7 +834,68 @@ personal_mining_authority:
742
834
  Each selection round prefers the represented source family with the
743
835
  fewest retained candidates, then the candidate whose represented project
744
836
  has the fewest retained candidates. A capped or uncovered family or
745
- project reports degraded coverage with retained and dropped counts.
837
+ project reports degraded coverage with retained and dropped counts.
838
+ mining_summary:
839
+ schema_version: agentera.personalGlossaryMiningSummary.v1
840
+ location: report.mining_summary
841
+ family_fields: [candidate_count, abstention_count, abstentions_by_reason]
842
+ explicit_abstention_keys:
843
+ - attributed_quotation
844
+ - ambiguous_reference
845
+ - conflicting_meaning
846
+ - empty_meaning
847
+ - empty_term
848
+ - example_context
849
+ - hypothetical_definition
850
+ - malformed_span
851
+ - meaning_bound_exceeded
852
+ - negated_definition
853
+ - indirect_question
854
+ - future_definition
855
+ - project_only_scope
856
+ - question_definition
857
+ - retracted_definition
858
+ - sarcasm_marker
859
+ - stale_anchor
860
+ - structural_fragment
861
+ - term_bound_exceeded
862
+ - unsafe_syntax
863
+ - uncertain_scope
864
+ - unresolved_anchor
865
+ - provenance_incomplete
866
+ - user_authorship_required
867
+ recurring_abstention_keys:
868
+ - agent_only_evidence
869
+ - copied_content
870
+ - provenance_missing
871
+ - insufficient_independent_origins
872
+ - insufficient_projects
873
+ - insufficient_sessions
874
+ - conversation_evidence_incomplete
875
+ - conversation_evidence_bound_exceeded
876
+ - project_only_scope
877
+ - noise_term
878
+ - too_many_qualifying_origins
879
+ - user_authorship_required
880
+ reconciliation:
881
+ fixed_keys: all_keys_present_as_nonnegative_integers
882
+ family_abstentions: abstention_count_equals_sum_of_reason_counts
883
+ total_candidates: total_equals_explicit_plus_recurring_candidate_counts
884
+ total_abstentions: total_equals_explicit_plus_recurring_abstention_counts
885
+ projection_input: report_input_count_equals_total_candidate_count
886
+ forbidden_content:
887
+ - terms
888
+ - source_ids
889
+ - evidence_anchors
890
+ - project_ids
891
+ - project_keys
892
+ - paths
893
+ - excerpts
894
+ rule: >-
895
+ Persist the fixed explicit and recurring keys even when their count is
896
+ zero. Reconcile family and total counts before publication. This summary
897
+ contains counts only and never retains candidate, source, project, path,
898
+ anchor, or content identity.
746
899
  excerpts:
747
900
  source_max_utf8_bytes: 4096
748
901
  max_per_candidate: 1
@@ -823,9 +976,10 @@ personal_mining_authority:
823
976
  meaning, project label, project key, raw evidence identity, excerpt text,
824
977
  or a per-row expanded command.
825
978
  abstentions: >-
826
- Upstream mining abstentions are not retained in a candidate projection and
827
- are never reconstructed. This read reports only bounded projection-local
828
- candidate-selection and safe-context omission counts.
979
+ The projection retains only the reconciled fixed-key aggregate mining
980
+ summary from candidate_projection.mining_summary. It never retains or
981
+ reconstructs individual upstream abstentions. Reads may return those
982
+ counts with projection-local selection and safe-context omission counts.
829
983
  coverage: >-
830
984
  Coverage remains the validated current projection report and is not
831
985
  recomputed from a list filter or page.
@@ -1834,8 +1988,8 @@ ownership_contracts:
1834
1988
  collision, or malformed existing state is a conflict and must never be
1835
1989
  repaired or overwritten implicitly.
1836
1990
  confirmed_variant_guard:
1837
- owner: packages/cli/src/validate/v1LegacyCruft.ts#scanPost30CruftViolations
1838
- validation_surface: packages/cli/test/cli/v1LegacyCruft.test.ts
1991
+ owner: packages/cli/src/validate/glossaryVariantGuard.ts#scanConfirmedVariantViolations
1992
+ validation_surface: packages/cli/test/cli/glossaryVariantGuard.test.ts
1839
1993
  loader: packages/cli/src/state/write/glossaryPublication.ts#loadProjectGlossaryDocument
1840
1994
  source_rule: >-
1841
1995
  Resolve the glossary through the canonical artifact registry and consume
@@ -1279,11 +1279,6 @@ entity_migration:
1279
1279
  phase_filters: >-
1280
1280
  Every --only apply is invalid during a v2-to-v3 boundary. Read-only
1281
1281
  filtered preview may remain available.
1282
- legacy_projection: >-
1283
- Canonical v2 YAML and already-resolved v1 conversions are inventoried
1284
- directly. A pending v1 Markdown conversion is not projected through a
1285
- prerequisite write during planning and therefore blocks the composed
1286
- apply before effects.
1287
1282
  lifecycle_normalization: >-
1288
1283
  Deterministic legacy plan lifecycle normalization is part of entity
1289
1284
  projection during cutover. Upgrade retains the original legacy YAML as
@@ -135,7 +135,7 @@ consumers:
135
135
  - development
136
136
  prime:
137
137
  owns:
138
- - channel-aware v1 migration and app-home gate command strings.
138
+ - channel-aware app-home gate command strings.
139
139
  may_resolve_channels:
140
140
  - stable
141
141
  - development
@@ -35,7 +35,7 @@ normalization_rules:
35
35
  avoid: Calling host coding agents peers or extension hosts of Agentera; implying Agentera is a module loaded into the host.
36
36
  - rule: /agentera is the main invocation.
37
37
  use: /agentera, $agentera for Codex-specific docs
38
- avoid: /hej except as a legacy bridge.
38
+ avoid: /hej.
39
39
  - rule: The CLI source and rendered dashboard are different.
40
40
  use: agentera prime source data, status dashboard rendered briefing
41
41
  avoid: Treating raw CLI labels as the user-facing dashboard.
@@ -72,7 +72,7 @@ plain_language:
72
72
  avoid: Bare freshness checkpoint
73
73
  - use: Agentera app files need repair
74
74
  avoid: bundle freshness gap in user-facing diagnostics
75
- - use: v1 migration check
75
+ - use: product-v1 state requires an explicit reset
76
76
  avoid: Bare upgrade guard in onboarding or recovery text
77
77
  - use: checkpoint commit
78
78
  avoid: Bare checkpoint
@@ -147,7 +147,6 @@ authoritative recovery command.
147
147
  | Delegate | Orchestrate assigns approved plan work to a worker capability during an explicitly orchestrated flow. |
148
148
  | Spawn | Build or Optimize asks the coding host to launch an isolated worker when the host provides that facility. |
149
149
  | Worker mechanism | A host-provided worker facility. Agentera ships no host-specific worker descriptor, adapter, plugin, hook, or package. |
150
- | Legacy bridge | Temporary v1 entry points, especially `/hej`, that guide users to `/agentera` and the v2 upgrade path. |
151
150
 
152
151
  CLI-visible `agentera prime` labels are source labels. Preserve them in CLI tests
153
152
  and parsing code, but transform them before presenting a user dashboard:
@@ -503,7 +502,7 @@ High-risk diagnostic rewrites:
503
502
  | `bundle freshness guard failed` | `install status check failed` |
504
503
  | `bundle refresh required` | `repair Agentera app files` |
505
504
  | `app refresh required` | `Agentera app files need repair` or `Agentera app files are outdated` |
506
- | `upgrade guard triggered` | `v1 migration check found legacy files` |
505
+ | `upgrade guard triggered` | `product-v1 state requires an explicit reset` |
507
506
  | `stale marker` | `missing or outdated version marker` |
508
507
  | `artifact freshness failed` | `artifact is stale` or `artifact needs sync` |
509
508
 
@@ -513,7 +512,7 @@ High-signal source surfaces for this vocabulary:
513
512
 
514
513
  | Source | Vocabulary surface |
515
514
  | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
516
- | `skills/agentera/SKILL.md` | Routing entry, routing layers, CLI-first access, installed-app status check, and v1 migration check. |
515
+ | `skills/agentera/SKILL.md` | Routing entry, routing layers, CLI-first access, installed-app status check, and product-v1 reset boundary. |
517
516
  | `skills/agentera/protocol.yaml` | Protocol primitives, glyphs, phases, visual tokens, exit signals. |
518
517
  | `skills/agentera/capability_schema_contract.yaml` | Schema groups, priorities, stable IDs, primitive-reference fields. |
519
518
  | `packages/cli/src/capabilities/*/instructions.ts` | Workflow grammar, capability roles, safety rails, exit marker forms. Loaded as a default-exported string constant; pre-cutover runtime serves it via `npx -y agentera@next prime --context <name> --format json`. |
@@ -14,6 +14,11 @@ inventory:
14
14
  production_owner: { module: packages/cli/src/registries/packageRegistry.ts, symbol: loadRegistry }
15
15
  consumers:
16
16
  - { kind: runtime, module: packages/cli/src/registries/packageRegistry.ts, symbol: loadRegistry, consumption: loads }
17
+ - path: references/adapters/product-v1-reset.yaml
18
+ classification: current
19
+ production_owner: { module: packages/cli/src/upgrade/productV1ResetAuthority.ts, symbol: loadProductV1ResetAuthority }
20
+ consumers:
21
+ - { kind: runtime, module: packages/cli/src/upgrade/productV1ResetAuthority.ts, symbol: loadProductV1ResetAuthority, consumption: loads }
17
22
  - path: references/analysis/evidence-tier-authority.yaml
18
23
  classification: current
19
24
  production_owner: { module: packages/cli/src/registries/evidenceTierContract.ts, symbol: loadEvidenceTierContract }
@@ -5,26 +5,7 @@
5
5
  # for context on why choices were made.
6
6
  #
7
7
  # The active authority uses writer-owned decision, revision, and satisfaction
8
- # entity files. The numbered projection model below is retained only as an exact
9
- # legacy migration input schema; it is not an ordinary post-cutover contract.
10
- #
11
- # ── Field-by-field mapping: v1 DECISIONS.md → v2 decisions.yaml ──
12
- #
13
- # v1 Field v2 Field v2 ID
14
- # ─────────────────────────────────────────────────────────────────────
15
- # ## Decision N · date DECISION.number DC1
16
- # (date from heading) DECISION.date DC2
17
- # **Question**: <text> DECISION.question DC3
18
- # **Context**: <text> DECISION.context DC4
19
- # **Alternatives**: (list) ALTERNATIVE entry DA1
20
- # (named alt, e.g. "[Foo], chosen") ALTERNATIVE.name DA2
21
- # (chosen/rejected status) ALTERNATIVE.status DA3
22
- # **Choice**: <text> DECISION.choice DC5
23
- # **Reasoning**: <text> DECISION.reasoning DC6
24
- # **Confidence**: <label> DECISION.confidence DC7
25
- # **Feeds into**: <text> DECISION.feeds_into DC8
26
- # ## Archived Decisions (implicit section) —
27
- # - Decision N (date): [Choice] — ... ARCHIVE.summary DR1
8
+ # entity files.
28
9
  #
29
10
  # Protocol references:
30
11
  # confidence: DL1-DL3 (protocol.yaml DECISION_LABELS)
@@ -10,37 +10,6 @@
10
10
  # Structural pattern: UPPER_CASE groups with numbered entries and stable IDs,
11
11
  # following capability_schema_contract.yaml and protocol.yaml conventions.
12
12
  #
13
- # ── Field-by-field mapping: v1 DOCS.md → v2 docs.yaml ──
14
- #
15
- # v1 Field v2 Field v2 ID
16
- # ─────────────────────────────────────────────────────────────────────
17
- # <!-- Last audit: date (label) --> HEADER.last_audit DH1
18
- # ## Conventions / doc_root CONVENTIONS.doc_root DC1
19
- # ## Conventions / style CONVENTIONS.style DC2
20
- # ## Conventions / auto_gen CONVENTIONS.auto_gen DC3
21
- # ## Conventions / version_files CONVENTIONS.version_files DC4
22
- # ## Conventions / semver_policy CONVENTIONS.semver_policy DC5
23
- # ## Artifact Mapping / table row MAPPING.entry DM1
24
- # (Artifact column) MAPPING.artifact DM2
25
- # (Path column) MAPPING.path DM3
26
- # (Producers column) MAPPING.producers DM4
27
- # ## Index / table row INDEX.entry DI1
28
- # (Document column) INDEX.document DI2
29
- # (Path column) INDEX.path DI3
30
- # (Last Updated column) INDEX.last_updated DI4
31
- # (Status column) INDEX.status DI5
32
- # ## Coverage / Documented COVERAGE.documented DV1
33
- # ## Coverage / Undocumented COVERAGE.undocumented DV2
34
- # ## Coverage / Stale COVERAGE.stale DV3
35
- # ## Coverage / Tests COVERAGE.tests DV4
36
- # ## Audit Log / ### date (label) AUDIT_LOG.entry DA1
37
- # (audit date from heading) AUDIT_LOG.date DA2
38
- # (audit label from heading) AUDIT_LOG.label DA3
39
- # - [finding_type] description FINDING.type DF1
40
- # (severity from context) FINDING.severity DF2
41
- # (description text) FINDING.description DF3
42
- # (resolution: fixed/deferred) FINDING.resolution DF4
43
- #
44
13
  # Protocol references:
45
14
  # visual tokens: VT1 (protocol.yaml VISUAL_TOKENS, status: current)
46
15
  # severity: SF1-SF3 (protocol.yaml SEVERITY_FINDING)
@@ -7,31 +7,6 @@
7
7
  # Structural pattern: UPPER_CASE groups with numbered entries and stable IDs,
8
8
  # following capability_schema_contract.yaml and protocol.yaml conventions.
9
9
  #
10
- # ── Field-by-field mapping: v1 EXPERIMENTS.md → v2 experiments.yaml ──
11
- #
12
- # v1 Field v2 Field v2 ID
13
- # ─────────────────────────────────────────────────────────────────────
14
- # ## Experiment N · date · label EXPERIMENT.number EX1
15
- # (date from heading) EXPERIMENT.date EX2
16
- # (label from heading) EXPERIMENT.label EX3
17
- # **Hypothesis**: <text> EXPERIMENT.hypothesis EX4
18
- # **Method**: <text> EXPERIMENT.method EX5
19
- # **Change**: <text> EXPERIMENT.change EX6
20
- # **Metric**: <text> + tables EXPERIMENT.metric EX7
21
- # **Regression**: <text> EXPERIMENT.regression EX8
22
- # **Status**: kept/discarded/baseline EXPERIMENT.status EX9
23
- # **Conclusion**: <text> EXPERIMENT.conclusion EX10
24
- # **Next**: <text> EXPERIMENT.next EX11
25
- # **Escalation**: <text> EXPERIMENT.escalation EX12
26
- # **Target progress**: <text> EXPERIMENT.target_progress EX13
27
- # **Brainstorm iteration log** EXPERIMENT.iteration_log EX14
28
- # ## Closure · date CLOSURE.date EC1
29
- # **Final value**: <value> CLOSURE.final_value EC2
30
- # **Target**: <target> CLOSURE.target EC3
31
- # **Reason**: <text> CLOSURE.reason EC4
32
- # ## Archived Experiments (implicit section) —
33
- # - EXP-N: result summary ARCHIVE.summary EA1
34
- #
35
10
  # Protocol references:
36
11
  # status visual tokens: VT1-VT3 (protocol.yaml VISUAL_TOKENS)
37
12
  # trend tokens: VT12-VT13 (protocol.yaml VISUAL_TOKENS)
@@ -83,5 +83,5 @@ ADVICE_RESOLUTION:
83
83
  CONFIRMED_VARIANT_GUARD:
84
84
  authority: references/artifacts/glossary-entry-contract.yaml#ownership_contracts.project.confirmed_variant_guard
85
85
  implementation: active
86
- validation_surface: packages/cli/test/cli/v1LegacyCruft.test.ts
86
+ validation_surface: packages/cli/test/cli/glossaryVariantGuard.test.ts
87
87
  consumer_lookup: forbidden
@@ -6,42 +6,7 @@
6
6
  # counts), overall trajectory, per-dimension grades (A-F), per-dimension
7
7
  # findings with confidence, and trend analysis against the prior audit.
8
8
  #
9
- # The active authority is one health_audit entity per writer-owned file. The
10
- # numbered projection model below is retained only as an exact legacy migration
11
- # input schema; it is not an ordinary read or write contract after cutover.
12
- #
13
- # ── Field-by-field mapping: v1 HEALTH.md → v2 health.yaml ──
14
- #
15
- # v1 Field v2 Field v2 ID
16
- # ─────────────────────────────────────────────────────────────────────
17
- # ## Audit N · date AUDIT.number HA1
18
- # (date from heading) AUDIT.date HA2
19
- # (CLI append time) AUDIT.appended_at HA7
20
- # **Dimensions assessed**: <list> AUDIT.dimensions HA3
21
- # **Findings**: N crit, N warn, N info AUDIT.findings_summary HA4
22
- # **Overall trajectory**: <text> AUDIT.trajectory HA5
23
- # **Grades**: Dim [X] | Dim [Y] AUDIT.grades HA6
24
- # ### Dimension: grade DIMENSION.name HD1
25
- # (grade from heading) DIMENSION.grade HD2
26
- # #### finding text FINDING.heading HF1
27
- # - **Location**: <text> FINDING.location HF2
28
- # - **Evidence**: <text> FINDING.evidence HF3
29
- # - **Impact**: <text> FINDING.impact HF4
30
- # - **Suggested action**: <text> FINDING.suggested_action HF5
31
- # (severity glyph from prefix) FINDING.severity HF6
32
- # (confidence from parenthetical) FINDING.confidence HF7
33
- # ### Trends vs Audit N TRENDS.entry HT1
34
- # - **Improved**: <text> TRENDS.improved HT2
35
- # - **Degraded**: <text> TRENDS.degraded HT3
36
- # - **Stable**: <text> TRENDS.stable HT4
37
- # - **New findings**: <text> TRENDS.new_findings HT5
38
- # - **Resolved**: <text> TRENDS.resolved HT6
39
- # - **Carried forward**: <text> TRENDS.carried_forward HT7
40
- # ### Patterns Observed PATTERNS.heading HP1
41
- # - Pattern text PATTERNS.entry HP2
42
- # ## Archived Audits (implicit section) —
43
- # ### Audit N · date (summary) ARCHIVE.summary HR1
44
- #
9
+ # The active authority is one health_audit entity per writer-owned file.
45
10
  # Protocol references:
46
11
  # severity: SF1-SF3 (protocol.yaml SEVERITY_FINDING)
47
12
  # confidence: CS1-CS5 (protocol.yaml CONFIDENCE_SCALE)
@@ -7,37 +7,6 @@
7
7
  # Structural pattern: UPPER_CASE groups with numbered entries and stable IDs,
8
8
  # following capability_schema_contract.yaml and protocol.yaml conventions.
9
9
  #
10
- # ── Field-by-field mapping: v1 OBJECTIVE.md → v2 objective.yaml ──
11
- #
12
- # v1 Field v2 Field v2 ID
13
- # ─────────────────────────────────────────────────────────────────────
14
- # # <title> HEADER.title OB1
15
- # **Status**: <status> HEADER.status OB2
16
- # **Closed at**: <timestamp> HEADER.closed_at OB3
17
- # **Final value**: <value> HEADER.final_value OB4
18
- # **Target**: <target> HEADER.target_ref OB5
19
- # **Reason**: <text> HEADER.reason OB6
20
- # ## Objective / description OBJECTIVE.description OJ1
21
- # ### Two-tier metric (or single) OBJECTIVE.metric_type OJ2
22
- # **Tier 1 (primary metric)**: <text> METRIC.description OM1
23
- # Direction/Unit/Variance METRIC.direction OM2
24
- # METRIC.unit OM3
25
- # METRIC.variance OM4
26
- # **Tier 2 (behavioral)**: <text> VALIDATION.description OV1
27
- # **Keep gate**: <text> VALIDATION.keep_gate OV2
28
- # **Discard gate**: <text> VALIDATION.discard_gate OV3
29
- # ### Why two tiers OBJECTIVE.rationale OJ3
30
- # ## Why this matters OBJECTIVE.why OJ4
31
- # ## Measurement OBJECTIVE.measurement OJ5
32
- # ## Gates GATES.description OG1
33
- # **Causal**: <text> GATES.causal OG2
34
- # **Structural**: <text> GATES.structural OG3
35
- # **Regression**: <text> GATES.regression OG4
36
- # ## Constraints OBJECTIVE.constraints OJ6
37
- # ## Scope / In scope SCOPE.included OS1
38
- # ## Scope / Out of scope SCOPE.excluded OS2
39
- # ## Baseline BASELINE.description OB7
40
- # ## Measurement model BASELINE.model_notes OB8
41
10
  #
42
11
  # Protocol references:
43
12
  # exit signals: EX1-EX4 (protocol.yaml EXIT_SIGNALS)