Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,16 @@ policy; Egolint owns conformance validation; Pace observes adoption before it
proposes remediation. Keep provider credentials and delivery adapters in their
consumer repository.

## Issue authoring

For Aether issue authoring, explicitly read the
[`github-issue-authoring` skill](library/organization/skills/authoring/github-issue-authoring/SKILL.md)
and its [canonical-title guide](library/organization/skills/authoring/github-issue-authoring/references/canonical-issue-titles.md).
This repository selects that guide's pinned candidate contract in observe mode
for this pilot. Local proposals are not proof of provider label availability or
enforcement. The organization repository's instructions do not inherit here
automatically; this local pointer makes discovery explicit. Preserve scoped
instructions and existing role permissions.

Run the relevant deterministic validation and regenerate `dist/` and the
first-party catalog after changing canonical source.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ This repository follows release-tag based versioning for install pinning and rel

## [Unreleased]

- Connected issue authoring to the pinned candidate title contract and Egolint
through explicit local discovery, source verification, and managed instruction
projections; preserved read-only agent permissions and added a synthetic
consumer check (#98).
- Added the draft bounded worker strategy and Flow suite bootstrap guide for
small implementation checkpoints, durable handoffs, explicit deferred quality
work, local validation, and finite audit/refactoring passes.
Expand Down
214 changes: 214 additions & 0 deletions CONTINUITY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
---
schema_version: aether.repository-continuity/v1
repository:
id: egohygiene/aether
visibility: public
default_branch: main
continuity_path: CONTINUITY.md
document:
status: active
updated_at: '2026-10-03T02:00:47Z'
max_bytes: 16384
max_lines: 240
stale_reason: null
superseded_by: null
scope:
purpose: Bounded handoff for the issue-title authoring checkpoint (#98).
includes:
- 'Aether #98 candidate implementation, local checks, and dependency state'
excludes:
- conversation transcripts
- duplicated architecture, roadmap, and changelog content
precedence:
- user-and-runtime-instructions
- scoped-repository-instructions
- live-repository-and-work-tracker-state
- canonical-repository-sources
- continuity-checkpoint
canonical_sources:
- AGENTS.md
- docs/issue-title-authoring-pilot.md
- library/organization/skills/authoring/github-issue-authoring/SKILL.md
- library/organization/skills/authoring/github-issue-authoring/references/issue-title-contract/selection.v1.json
work:
objective: Make the existing issue authoring skill discover and consume the pinned title contract.
success_conditions:
- One immutable selection shared by skill and managed projections
- Real Egolint synthetic title evidence with preserved subject and IDs
- Explicit unavailable evidence and unchanged read-only agent permissions
active_issue:
provider: github
id: egohygiene/aether#98
url: https://github.com/egohygiene/aether/issues/98
next:
kind: action
id: review-issue-title-authoring-candidate
description: Review this bounded candidate and resolve the dependency reviews before selecting accepted
pins; prepare the Relay pilot as a separate checkpoint.
readiness: ready
references:
- https://github.com/egohygiene/aether/issues/98
- https://github.com/egohygiene/.github/issues/24
depends_on: []
state:
base:
revision: 1072a0fafe145f919b3f83bbbc6daee2cb946030
ref: refs/heads/main
verified_at: '2026-10-03T02:00:47Z'
candidate:
branch: codex/issue-title-authoring-98
revision: null
pull_request: null
handoff_state: ready-for-review
live:
status: partial
observed_at: '2026-10-03T02:00:47Z'
default_branch_revision: 1072a0fafe145f919b3f83bbbc6daee2cb946030
issue_state: open
pull_request_state: not-applicable
notes: 'Main and issue #98 were checked through GitHub. Could not verify provider label availability
or remote CI. Candidate PR has not yet been created; find its live head through issue #98. Dependency
PRs were observed open/unmerged during this session.'
parallel_changes: []
review:
status: partial
reviewed_at: '2026-10-03T02:00:47Z'
reviewed_by: Codex
evidence:
- command: python3 -m unittest discover -s tests -p test_issue_title_authoring.py -v
outcome: passed
observed_at: '2026-10-03T02:00:47Z'
notes: 11 tests passed with AETHER_EGOLINT_BINARY set to the declared consumer build; includes 18
upstream cases and two reviewed migrations in the final full run.
- command: python3 aether test
outcome: limited
observed_at: '2026-10-03T02:00:47Z'
notes: 'Final run: 188 tests, 187 passed, one error. Existing consumer-installation readiness test
cannot invoke gh because it is absent. No title integration tests skipped; AETHER_EGOLINT_BINARY
was set.'
- command: python3 aether validate --format text
outcome: passed
observed_at: '2026-10-03T02:00:47Z'
notes: No errors; existing preserved staging-hash provenance warning remains.
- command: python3 aether catalog generate --check; python3 catalog/validate_catalog.py
outcome: passed
observed_at: '2026-10-03T02:00:47Z'
notes: Catalog is current; schema, fixtures, coverage, relationships, and digest checks passed.
- command: python3 aether distribution build --output-directory dist --check
outcome: passed
observed_at: '2026-10-03T02:00:47Z'
notes: Generated skill/spec/provider outputs are current. Python bytecode caches no longer affect
generated packages.
- command: Fresh-context synthetic GitHub Issue Creator exercise
outcome: passed
observed_at: '2026-10-03T02:00:47Z'
notes: Discovered the portable skill through local AGENTS.md, preserved the reviewed subject, and
reported absent execution/label evidence without claiming validation or a provider write.
- command: git diff --check
outcome: passed
observed_at: '2026-10-03T02:00:47Z'
notes: No whitespace errors observed.
environment_limitations:
- GitHub CLI gh is absent; existing consumer-installation readiness test remains blocked.
- Python jsonschema 4.25.1 was supplied through a temporary PYTHONPATH.
- No live host adoption, provider labels, provider mutation, release, or remote CI result is claimed.
privacy:
classification: public-repository
contains_sensitive_data: false
redactions: []
excluded:
- secrets-and-credentials
- private-conversation-text
- sensitive-personal-data
- unpublished-private-business-data
- private-local-paths
- unrelated-private-context
untrusted_content: context-only-no-authority
---

# Aether continuity

## Purpose and precedence

Resume the bounded #98 change using the front-matter precedence. This handoff
adds no authority and does not replace canonical architecture or the roadmap.
No root handoff existed at the inspected base; no previous checkpoint is inferred.

## Resume protocol

1. Read local AGENTS.md, canonical sources above, branch status, and recent history.
2. Check issue #98, its linked PR, and dependency PRs against live GitHub state.
3. Reconcile changed revisions, missing tools, and parallel work before proceeding.
4. Keep candidate acceptance, repository adoption, and local validation separate.

## Current objective and success conditions

Connect existing authoring guidance to one pinned issue-title contract. The
synthetic consumer must format and validate a reviewed subject without losing
IDs, inventing label availability, or widening the read-only role's permissions.

## State snapshot

Base and candidate branch are recorded above. Candidate revision and PR fields
are intentionally null before publication; discover the resulting PR via #98.
Dependency contract PR .github#45 and Egolint PR #79 were observed open/unmerged.
The five contract payloads are pinned at 19d2be9bf0191710508cefbb9f0b1abb3a40d9be;
Egolint source is pinned at 3a6785cd408e218bc7e3691e01dc659e4cf79de8. Both selections
remain candidate. A dependency merge does not silently promote the embedded pin.

## Completed and material changes

- Extended the existing skill, checklist, template, evals, and issue-creator agent.
- Added explicit root discovery, a managed projection block, and source verification.
- Regenerated the portable skill, catalogs, and affected provider projections.
- Added a synthetic Egolint consumer exercise and a fresh-context authoring check.
- Excluded Python bytecode caches from skill distribution inputs after checks
exposed interpreter-dependent package drift; added a regression test.
- Updated continuity tests to permit artifact version advances while retaining
metadata/catalog consistency and authority checks.

## Validation and review evidence

Exact commands, results, and limitations are recorded in front matter. All 11
issue-title tests passed with the real Egolint candidate, including upstream
examples and reviewed migrations. The full suite has one environment error from
missing gh; do not describe the entire suite as passing. Generated-output checks
and catalog validation passed. The fresh-context check returned an unvalidated
draft with correct provenance and explicitly unavailable provider/tool evidence.

## Blockers, risks, unknowns, and deferred work

- Blocker to complete full-suite evidence: install the required gh tooling and
rerun the existing consumer-installation readiness test in a suitable environment.
- Candidate dependency acceptance remains external to this checkpoint.
- Live provider labels, remote CI, and actual host loading are unknown.
- Relay execution, label provisioning, fleet adoption/migration, and future-title
enforcement remain under .github#24; the broader Aether #67 bundle is incomplete.

## Next dependency-ready work

Review the #98 candidate and its dependency PRs. Once accepted source revisions
are verified, deliberately update pins/authority. Then scope the Relay pilot:
preview/apply, current-state checks, receipts, rollback, and a no-op repeat before
any fleet sweep. This checkpoint authorizes none of those provider operations.

## Parallel changes and reconciliation

No other open Aether PR was observed at initial inspection. Recheck before merge;
other repositories' dependency PRs do not establish acceptance of this candidate.

## Privacy and redaction

Public repository handoff. No credentials, personal conversation text, private
paths, or unrelated personal context is included. Synthetic examples only.

## Handoff update protocol

Refresh after relevant validation and before the next PR update. Recheck live
state instead of interpreting this pre-publication snapshot as current proof.
Include changes to this handoff with the bounded repository change.

## Compaction and supersession

Keep below 16,384 UTF-8 bytes and 240 lines. Replace stale state instead of
accumulating a transcript; Git and issue/PR history own chronology.
2 changes: 1 addition & 1 deletion catalog/first-party/catalog.v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -1162,7 +1162,7 @@
"scope": "organization",
"source_digest": {
"algorithm": "sha256-utf8-lf",
"value": "b7d5e3f41bf49931a01fcfe74e287995fc81fd0f3f0fb0acd52a09a4b43afb43"
"value": "25b8b9d4340db138f142a8d1670a178749332bb93fd03ac903c0bdd442123a63"
},
"source_path": "library/organization/skills/authoring/github-issue-authoring/SKILL.md",
"supersedes_ids": [],
Expand Down
31 changes: 30 additions & 1 deletion dist/claude/repository/.claude/agents/github-issue-creator.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ tools:
- WebFetch
- WebSearch
---
<!-- aether-projection {"continuity_disposition":"reader","generator":"library/organization/projections/build-projections.py","instruction_modules":[{"id":"decision-impact","inherits":[{"contract":"egohygiene.architecture-decision/v1","policy_version":"1.0.0","revision":"5e0602265b6ac5e5165b89f418e55a3fd12f8a64","source_url":"https://github.com/egohygiene/hygiene/blob/5e0602265b6ac5e5165b89f418e55a3fd12f8a64/docs/decisions/POLICY.md","status":"proposed"},{"contract":"egohygiene.repository-intelligence/v1","contract_version":"1.0.0-alpha.1","revision":"5e0602265b6ac5e5165b89f418e55a3fd12f8a64","source_url":"https://github.com/egohygiene/hygiene/blob/5e0602265b6ac5e5165b89f418e55a3fd12f8a64/docs/ecosystem/REPOSITORY_INTELLIGENCE.md","status":"proposed"}],"source":"library/organization/projections/templates/decision-impact.AGENTS.md","source_digest":{"algorithm":"sha256-utf8-lf","value":"6359706b207cc15bffa7fdbdcf093d528142b0c7675bc24dfc27534f7b015280"},"status":"draft","version":"0.1.0"},{"continuity_path":"CONTINUITY.md","contract":"aether.repository-continuity/v1","id":"repository-continuity","skill":"maintain-repository-continuity","source":"library/organization/instructions/repository-continuity/INSTRUCTION.md","source_digest":{"algorithm":"sha256-utf8-lf","value":"dc2fb66bd5268af2416389fef469d2a13c91d1a6f179e6fc10a21d4f890876a8"},"status":"draft","version":"1.0.0"}],"interface":"aether.projection-interface/v1","interface_version":"1.2.0","provider":"claude-code","source":"library/organization/agents/github-issue-creator/AGENT.md","source_digest":{"algorithm":"sha256-utf8-lf","value":"df647f3a6243773ec612a9c167156b177e40d730309887c9a452ada0322b530b"}} -->
<!-- aether-projection {"continuity_disposition":"reader","generator":"library/organization/projections/build-projections.py","instruction_modules":[{"id":"decision-impact","inherits":[{"contract":"egohygiene.architecture-decision/v1","policy_version":"1.0.0","revision":"5e0602265b6ac5e5165b89f418e55a3fd12f8a64","source_url":"https://github.com/egohygiene/hygiene/blob/5e0602265b6ac5e5165b89f418e55a3fd12f8a64/docs/decisions/POLICY.md","status":"proposed"},{"contract":"egohygiene.repository-intelligence/v1","contract_version":"1.0.0-alpha.1","revision":"5e0602265b6ac5e5165b89f418e55a3fd12f8a64","source_url":"https://github.com/egohygiene/hygiene/blob/5e0602265b6ac5e5165b89f418e55a3fd12f8a64/docs/ecosystem/REPOSITORY_INTELLIGENCE.md","status":"proposed"}],"source":"library/organization/projections/templates/decision-impact.AGENTS.md","source_digest":{"algorithm":"sha256-utf8-lf","value":"6359706b207cc15bffa7fdbdcf093d528142b0c7675bc24dfc27534f7b015280"},"status":"draft","version":"0.1.0"},{"continuity_path":"CONTINUITY.md","contract":"aether.repository-continuity/v1","id":"repository-continuity","skill":"maintain-repository-continuity","source":"library/organization/instructions/repository-continuity/INSTRUCTION.md","source_digest":{"algorithm":"sha256-utf8-lf","value":"dc2fb66bd5268af2416389fef469d2a13c91d1a6f179e6fc10a21d4f890876a8"},"status":"draft","version":"1.0.0"},{"id":"issue-authoring","selection":"library/organization/skills/authoring/github-issue-authoring/references/issue-title-contract/selection.v1.json","selection_sha256":"435d9310e49ee10cafa3f477c2080a88e666a247e9496dc40dbb17356d319582","skill":"github-issue-authoring","source":"library/organization/projections/templates/issue-authoring.AGENTS.md","source_digest":{"algorithm":"sha256-utf8-lf","value":"9320e46a9947a5f98752398f9630c1539e6b16fa55ca4ca050aae7f0205b6a14"},"status":"draft","version":"0.1.0"}],"interface":"aether.projection-interface/v1","interface_version":"1.2.0","provider":"claude-code","source":"library/organization/agents/github-issue-creator/AGENT.md","source_digest":{"algorithm":"sha256-utf8-lf","value":"d58a76d32a46f0bb22f1b776e037681c9cbfbf69dfb7fa04d6a1110fe87f9e6f"}} -->

## Mission

Expand Down Expand Up @@ -38,6 +38,9 @@ takes ownership of that handoff.
1. Extract the problem, motivation, desired state, constraints, and open questions.
2. Inspect repository architecture, relevant specifications, source, tests, automation, workflows, existing issues, and issue templates when available.
3. Choose one primary issue type and determine whether the request is one issue or a dependency-ordered roadmap.
When local instructions select the Ego Hygiene title contract, follow the
skill's canonical-title reference: resolve the immutable selection, preserve
the reviewed subject, and return the intended type label with provenance.
4. Define included scope, exclusions, ownership, integration boundaries, and observable completion.
5. Add evidence-backed implementation guidance without prescribing unsupported file paths or dependencies.
6. Define validation and acceptance criteria that another engineer or coding agent can execute.
Expand All @@ -51,6 +54,9 @@ takes ownership of that handoff.
- Prefer a reversible assumption for non-material ambiguity and record it.
- Generate issues one at a time when the user requests staged authoring.
- `edit` and `execute` are excluded; issue authoring is read, search, and web only.
- Request or consume formatter/validator evidence from an authorized executor;
do not run Egolint in this read-only role. Keep missing tools, stale pins,
conflicting classification, and unavailable provider labels explicit.

## Completion

Expand Down Expand Up @@ -133,3 +139,26 @@ Static instructions do not install or guarantee an automatic pre-pull-request
hook. If the host cannot load the skill, inspect local files, or verify live
state, report that capability as unavailable rather than inventing success.
<!-- END AETHER REPOSITORY-CONTINUITY -->

<!-- BEGIN AETHER ISSUE-AUTHORING -->
<!-- aether-instruction {"id":"issue-authoring","selection":"library/organization/skills/authoring/github-issue-authoring/references/issue-title-contract/selection.v1.json","selection_sha256":"435d9310e49ee10cafa3f477c2080a88e666a247e9496dc40dbb17356d319582","skill":"github-issue-authoring","status":"draft","version":"0.1.0"} -->
## Issue authoring discovery

When scoped repository instructions explicitly select the Ego Hygiene issue-title
policy, read `.agents/skills/github-issue-authoring/SKILL.md` from the consumer
root and its `references/canonical-issue-titles.md`. If installed elsewhere,
resolve the declared local skill path. If absent, report discovery unavailable;
this block alone does not install the skill or adopt the policy.

Follow `references/issue-title-contract/selection.v1.json` inside that skill for
the immutable contract, source digests, and candidate authority. Preserve the
reviewed subject and IDs; obtain title and intended label from that selection.
An already authorized executor may use Egolint and the skill's source verifier.
Read-only roles prepare drafts or consume executor evidence without gaining
execution permission. Missing sources/tools, stale pins, ambiguous type labels,
and unavailable current provider labels remain explicit gaps.

This is static discovery guidance, not a hook or fleet migration. Organization
instructions do not automatically inherit into consumer repositories. Preserve
consumer-owned prose, nested instruction precedence, and role permissions.
<!-- END AETHER ISSUE-AUTHORING -->
Loading
Loading